面向对象概念及构造器详解!

面向对象概念及构造器详解!

面向对象

  • 在学习面向对象之前我们先来看一下面向过程

面向过程思想

  • 面向过程的步骤清晰简单,第一步做什么,第二步做什么

  • 面向对象过程适合处理一些简单的问题

    面向对象的过程可以用把大象放进冰箱举例

    ​ 面向对象的分析:

    ​ 第一步:把冰箱门打开

    ​ 第二步:把大象放进冰箱

    ​ 第三步:把冰箱门关上

面向对象思想

  • 面向独享是用分类的思维模式,思考解决问题需要哪些分类,然后对这些分类进行单独的思考。最后,才对分类的某个细节进行面向过程的探索

  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题

    还是以把大象放进冰箱举例

    面向对象的分析过程:

    第一步:把动作的实体抽象出来,主体,有人,冰箱,大象

    第二步:定义主体,为主题添加对应的功能和属性

    ​ 人,需要有打开,关闭冰箱的功能,以及放大象进冰箱的功能

    ​ 冰箱,需要有开门,关门的属性

    ​ 大象,需要有能放进入冰箱的功能

  • 面向对象的本质就是:以类的方式组织代码,以对象的组织(封装)数据

  • 抽象

  • 三大特性:封装

    ​ 继承

    ​ 多态

创建与初始化对象

使用new关键字创建对象

  • 使用new关键字创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认化的初始值以及对类中构造器的调用

代码示例:类中只能有属性和方法

package com.oop.Demo02;

//学生类
public class Student {
    //属性:字段
    String name;
    int age;

    //方法
    //this代表当前的类,用于本类的方法中使用本类的属性
    public void study(){
        System.out.println(this.name+"在学习");
    }
}

我们在定义了类之后,要在main方法中去调用,这时候,我们就应该创建一个测试类,或者应用类,这个类用来调用这个项目中所有类的方法和属性,一个项目应该只存在一个main方法

eg:

package com.oop.Demo02;

//一个项目应该只存在一个main方法
public class Test {
    public static void main(String[] args) {
        //类是抽象的,需要实例化,通过new来实例化
        //类实例化后会返回自己的对象
        //student对象就是一个Student类的具体实例
        Student daughter=new Student();
        daughter.name="阿尼亚";
        daughter.age=5;
        System.out.println(daughter.name);
        System.out.println(daughter.age);
    }
}

输出:

阿尼亚
5
  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
    • 1.必须和类的名字相同
    • 2.必须没有返回类型,也不能写void

接下来我们看一下关于构造器

我们首先随便定义一个动物类Animal

Animal.java:

public class Animal {
    
}

然后在测试中实例化这个类,运行一下看

Application.java:

public class Application {
    public static void main(String[] args) {
        //new 实例化了一个对象
        Animal animal=new Animal();

    }
}

可以看出我们在上面的Animal类中是什么都没写的,然而实例化看一下class文件可以看出

Animal.class:

package com.oop.Demo02;

public class Animal {
    public Animal() {
    }
}

可以看出在class中已经生成了一个class文件

一个类中即使什么都不写,也会存在一个方法

而我们看一下无参构造和有参构造

上述,自动生成的方法就是一个无参构造方法,我们自己写一下看,

无参构造:

public class Animal {
    //属性 name
    String name;
    //无参构造
    public Animal() {
    }
}

调用一下无参构造的方法:

public class Application {
    public static void main(String[] args) {
        //new 实例化了一个对象
        Animal animal=new Animal();
        animal.name="bangde";
        System.out.println(animal.name);
    }
}

输出:

bangde

即使我们不加这个无参构造,输出也能得到自己想要的,因为上文说过编译器会自动生成一个午餐的构造方法。

有参构造:

public class Animal {
    //属性 name
    String name;

    //有参构造
    public Animal(String name) {
        this.name = name;
    }
}

加有参构造之后,我们可以看到,刚才实例化的对象,已经开始报错了!

插入图片:

那是因为,我们创建了有参构造方法之后,编译器便不会为我们生成无参的构造方法了,这时如果我们还想要有无参的构造方法,需要自己再写一个无参的构造方法!

public class Animal {
    //属性 name
    String name;

//    无参构造
    public Animal() {
    }

    public Animal(String name) {
        this.name = name;
    }
}

这是程序可以正常运行,那如果我们想调用无参的构造方法,只需,给方法传入对应的参数即可!

public class Application {
    public static void main(String[] args) {
        //new 实例化了一个对象
        Animal animal=new Animal();
        animal.name="邦德";
        System.out.println(animal.name);
        Animal animal2=new Animal("汪汪");
        System.out.println(animal2.name);

    }
}

当然,我们再idea中,也是有快捷键去生成有参和无参的构造方法的快捷键的。

当在类中定义过属性之后

只需,按住ALT+INSERT键,点击Constructor,然后选中想要创建有参构造方法的属性即可生成有参的构造方法,如果方法中想包含多个属性,按住ctrl键,然后点击多个即可!


如果想生成无参的构造方法,点击过Construcor之后点击select None即可

插入图片:

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 面向对象概念及构造器详解!