2022-07-19 第二小组 张宁杰 Java面向对象(2)
目录
- 构造器
- this关键字
- 类之间has a 和 is a 的区别
- 空指针异常
- 面向对象的特征:封装
导图
知识点
知识点1
构造器
什么时候用构造器赋值?
看创建对象的目的是什么
如果说创建对象仅仅是为了调用这个类的方法,应当使用无参构造器
如果说创建对象的时候需要使用到对象的某个属性,可以使用构造器赋值
必须保证每个类都有一个无参构造器
public static void main(String[] args) {
//person是对象,是person类的实例
Person person = new Person();
//对象的功能
//对象可以调属性,也可以调方法
//对象调用的属性和方法
person.name = "小明";
person.age = 20;
person.eat();
Car car = new Car();
car.color = "黑色";
car.brand = "宝马";
car.run();
// person.travel(car);
//p2出生,就会有name,age,wife
Wife wife = new Wife();
wife.name = "李四";
wife.age = 24;
//p2一旦创建,所有的属性都会紧接着初始化
Person p2 = new Person("张三",25,wife);
Person p3 = new Person("王五",23);
}
知识点2
this关键字
this代表的是当前类的对象,this代表的是当前方法的调用者
this既然是代表方法的调用者,它实际上和对象的作用是一样的
既可以调属性,也可以调方法
this不能用在static方法中
开发中我们通常用this给构造器赋值
public class Ch02 {
String str;
int i;
public Ch02(){
}
public Ch02(String str){
this.str = str;
}
public Ch02(String str,int i){
// this.str = str;
//调用构造器,不常用
//不需要写任何名字
//this调用构造器的要求1、必须在构造器中才能使用this调用构造器 2、必须是第一句话(第一行代码)
this(str);
this.i = i;
}
public void show(String str){
/*
当使用对象调用属性时,调用的是成员变量
*/
//Ch02 c = new Ch02();
this.str = str;
//this.info(); 一般要省略
info();
}
public void info(){
System.out.println(str);
}
public static void main(String[] args) {
// Ch02 c = new Ch02();
// c.show("hhh");
// System.out.println(c.str);
// Ch02 c2 = new Ch02("hhe");
// c2.info();
Ch02 c3 = new Ch02("heheh",20);
c3.info();
}
}
this调用构造器的要求
1、必须在构造器中使用this调用构造器
2、必须是第一句话(第一行代码)
知识点3
类之间has a 和 is a 的区别
人要租一台车
租:用的时候我就拿过来,不用的时候还回去,这台车是不属于我的
方法:旅游,旅游需要一台车
这台车不是这个人的
人和车之间是只有一个使用的关系
这个Car作为一个形式参数,声明在方法处、
知识点4
空指针异常
NullPointerException
空指针异常出现的根本原因 ,是程序运行到某一个位置时:引用、请求了不存在的资源,包括不限于常量、变量、属性、原型、方法等。
3个异常:
1、数组下标越界
2、内存溢出(错误)
3、空指针
知识点5
面向对象的特征:封装
1.代码层面
(1)属性私有化,所有的属性都要使用private封装
(2)提供一个公有的set,get方法。
getter方法能够按照客户的期望返回格式化的数据
setter方法可以限制和检验setter方法传入的参数是否合法
隐藏对象的内部结构
正确定义一个类:
(1)所有的属性私有化
(2)每个属性都有对应的setter、getter方法
2.思想层面
学习心得
今天的学习内容是对昨天学习内容的深化,通过学习,我对Java的封装特性有了更深的理解,但是在练习的过程中,我发现自己对方法的封装还不够熟练。