其他分享
首页 > 其他分享> > 类和对象

类和对象

作者:互联网

类与对象

类 = 方法 + 属性

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。

Person类 Car类 这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为。

对象

对象是抽象概念的具体实例

能够体现出特点,展现出功能的是具体的实例,不是一个抽象的概念。

对象是具体的事物,类是抽象的,是对对象的抽象,类是对象的模板。

创建与初始化对象

使用new关键字创建对象

  1. 使用new关键字创建对象的时候,会给对象分配默认的值内存空间*。

代码演示


构造器(构造方法)

  1. 使用new关键字创建对象的时候,还会对类中构造器进行调用(new一个对象,本质是在调用构造器)

构造器也称为构造方法,是在进行创建对象的时候必须要调用的。

构造器(构造方法)有两个特点:

代码演示构造器

第一步

创建一个Person类 ,创建一个启动器类Application类
public class Person{
    //public Person(){} 一创建Person类 ,这个Person()构造方法其实就存在了!只不过没显示出来。可以看编译后的class文件。
    //Person类中的Person(){}是构造方法
}

/*
    * 看完class文件后,得出结论:
    * 一个类即使什么都不写,也会存在一个方法(构造方法)。
    * 这个构造方法 的名字 跟类的名字一模一样(大小写也一样)
    * 这个构造方法 没有返回值,也没有void 
    * 这个默认存在的Person()构造方法是 无参构造(没有参数)
    * */

---------------------------------------------------------------------------------
public class Person{
    //我们可以人为让这个默认存在的构造方法显示出来
    //
    public Person(){
    }
}

public class Application{
    new Person();
    //使用new关键字实例化了一个person对象
    Person person = new Person();
    /*
    //Person类现在是空的,但是还可以new出来一个Person()方法 为什么呢?
    原因:Person()方法在Person类中其实是存在的!只不过没显示出来。
    正因为Person()方法是存在的,我们才能通过new关键字来实例化类,才能创建对象
    (即Person person = new Person();)
    
    */
}

第二步

public class Person{
    //定义一个name属性/字段
	String name;
}
public class Application{
    new Person();
    //使用new关键字实例化了一个person对象
    Person person = new Person();
   //此时没有使用构造器实例化初始值 输出为null
	System.out.println(person.name);//null
}

第三步

public class Person{
    //定义一个name属性/字段
	String name;
    
    //构造方法作用一:实例化初始值
    public Person(){
        this.name = "小明";
    }
}
public class Application{
    new Person();
    //使用new关键字实例化了一个person对象
    Person person = new Person();	//debug看出 ,进入构造器,构造器走完 其实才生成对象
   //此时使用构造器实例化初始值 输出为小明
	System.out.println(person.name);//小明
}

第四步(用有参干掉无参)

public class Person{
    //定义一个name属性/字段
	String name;
    
    //无参构造器
    public Person(){
        //this.name = "小明";
        //定义了有参构造方法之后,要用无参构造的话,无参必须要显示定义,无参默认空着就行。
    }
    
    //有参构造器 (一旦定义了有参构造,要用无参构造的话,无参构造必须显示定义)
    public Person(String name){
        this.name = name;
        //this.name中的name代表对象本身的name
        //= 右边的name 代表参数传递下来的name!
    }
}

定义了有参构造之后,在Application类里若什么都不传值,则还是默认null(String类型默认null)。

public class Application {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);//输出null
    }
}

定义了有参构造之后,若在Application类里传递值,则输出值

public class Application {
    public static void main(String[] args) {
        Person person = new Person("123456");
        System.out.println(person.name);//输出123456
    }
}

debug可看出,走Person person = new Person("123456");语句时,会跟随参数判断走哪个方法。

(没传参数,就走无参方法,传了参数,就走相应的有参方法(方法重载))

构造器的作用总结

构造器(构造方法)作用一:new一个对象,本质是在调用构造器

构造器(构造方法)作用二:使用构造器实例化初始值

IDEA生成构造器快捷键

生成有参构造器的前提时定义了类变量

Alt + Insert 选择Constructor 选择属性(什么都不选就生成无参构造器,选择属性就生成有参构造器)

或者右键 Generate 选择Constructor 选择属性

构造器总结

1.构造器方法名和类名相同

2.没有返回值

作用:1. new本质在调用构造方法

​ 2.初始化对象值

注意点:

IDEA生成构造方法快捷键Alt + Insert

标签:无参,name,构造方法,对象,构造,Person,new
来源: https://www.cnblogs.com/intelliyu/p/16056202.html