ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

类和对象

2022-03-25 19:02:12  阅读:161  来源: 互联网

标签:无参 name 构造方法 对象 构造 Person new


类与对象

类 = 方法 + 属性

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

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

对象

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

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

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

创建与初始化对象

使用new关键字创建对象

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

代码演示


构造器(构造方法)

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

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

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

  • 必须和类的名字相同(大小写也相同)
  • 必须没有返回类型,也不能写void(返回类型为空)

代码演示构造器

第一步

创建一个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关键字,必须要有构造器。new一个对象,本质是在调用构造器

  • 有参构造器 (一旦定义了有参构造,无参构造必须显示定义,一般无参构造方法里面默认空着就行)

    ​ 若没有显示定义无参构造,若用无参构造的话则无效或报错

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

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

IDEA生成构造器快捷键

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

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

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

构造器总结

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

2.没有返回值

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

​ 2.初始化对象值

注意点:

  • 类创建后,即使什么也不写,也会默认有一个无参构造方法。(没有这个无参构造器,new是new不出阿来的)

  • 定义有参构造后,如果想使用无参构造,则显示的定义一个无参构造(不用无参的话,可以不显示定义无参构造)

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有