类与对象
类与对象的关系
-
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体事物。
- 动物、植物、手机、电脑……
- Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具有的特点和行为。
-
对象是抽象概念(类)的具体实例
- 潘潘就是人的一个具体实例,潘潘家里的旺财就是狗的一个具体实例。
- 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
创建与初始化对象
-
使用new关键字创建对象
-
使用new关键字创建对象时,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
构造器(重点)
- 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。
- 构造器的两个特点:
- 必须与类同名
- 必须没有返回类型,也不能写void
- 构造器的作用:
- new的本质在于调用构造方法
- 初始化对象的值:(主要初始化成员变量(属性)???)
默认初始化:
数字:0 或0.0
char:u0000
boolean:false
引用类型:null
- 注意点:
- 如果类中没有定义构造器,则编译器会自动定义一个无参的构造器,即我们在类中不用特意定义一个构造器,其具体形式如下:
public Person(){ }
- 若在类中自己定义了构造器,那么编译器就不再自动定义构造器,所以我们在定义了一个有参的构造器后,要是还想调用一个无参的构造器必须自己再显示的定义一个无参构造器。
- IDEA中使用alt+insert快捷键生成构造器
- 如果类中没有定义构造器,则编译器会自动定义一个无参的构造器,即我们在类中不用特意定义一个构造器,其具体形式如下:
package com.oop.demo02;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//实例化了一个对象,调用无参构造方法
Person panpan = new Person();
System.out.println(panpan.name);//初始化name:null(默认值)
System.out.println(panpan.age);//初始化age:0(默认值)
panpan.study();//调用方法,null,要好好学习哦!!!
System.out.println("--------------");
//又实例化了一个对象,调用有参构造方法
Person qianqian = new Person("Asher");
System.out.println(qianqian.name);
}
}
package com.oop.demo02;
//运行.java文件会产生.class文件
public class Person {
String name;
int age;
public void study(){
System.out.println(this.name+",要好好学习哦!!!");
}
//1.使用new关键字,本质是在调用构造器
//2.用来初始化
//无参构造器
public Person() {
}
//有参构造器:一旦定义了有参构造器,如果还想用无参构造器,此时无参构造器必须显示定义
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
this关键字
this的本质就是“创建好的对象的地址”,由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。
- this最常的用法:
- 在程序中产生二义性,应使用this来指明但前对象,普通方法中this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
- 使用this关键字调用重载的构造方法,避免相同的初始化代码,但只能在构造方法中使用,并且必须位于构造方法的第一句。
- this不能用于static方法中。