day01-面向对象高级
今日内容
- 继承
- 修饰符
- 权限修饰符
- final
- static
今日目标
- 能够知道继承的好处和弊端
- 能够知道继承中成员的访问特点
- 能够知道方法重写及应用
- 能够完成继承案例
- 能够知道权限修饰符访问特点
- 能够知道final关键字修饰内容的特点
- 能够知道static关键字修饰内容的特点
1.前言
1.1 面向对象基础回顾
在面向对象基础部分,我们学习了:
- 类的定义
- 对象的使用
- private关键字
- this关键字
- 封装
- 构造方法
- JavaBean
1.2 面向对象高级课程安排
- day01
- 继承
- 修饰符
- day02
- 多态
- 抽象类
- 接口
- day03
- 内部类
- lambda表达式
2.继承
2.1 继承概述
继承
- 让类与类之间产生关系(子父类关系)
- 子类可以直接使用父类中非私有成员
- 子类中可以定义自己特有的成员
格式
- Fu称之为父类,也被称为基类、超类
- Zi称之为子类,也被成为派生类
public class 子类名 extends 父类名{
}
// 示例
public class Zi extends Fu {
}
代码【练习】
- 练习继承的格式
- 理解:
- 子类可以直接使用父类中非私有成员
- 子类中可以定义自己特有的成员
public class Fu {
public void show() {
System.out.println("show方法被调用");
}
}
public class Zi extends Fu {
public void method() {
System.out.println("method方法被调用");
}
}
/*
测试类
*/
public class Demo {
public static void main(String[] args) {
//创建对象,调用方法
Fu f = new Fu();
f.show();
Zi z = new Zi();
z.method();
z.show();
}
}
2.2 继承的好处和弊端
好处
- 提高代码的复用性:多个子类中公共的内容抽取到父类中,子类可以直接使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UeGSqZSZ-1661925873441)(assets/01-公共内容抽取父类.png)]
- 提高代码的维护性:父类中添加非私有的成员,子类自动就可以使用了
弊端
- 提高代码耦合性:父类中删除一个成员,子类中使用过这些成员的代码就会报错
使用场景
- 发现多个类中,有相同的内容,并且存在 is a 关系(学生是人的一种).可以考虑使用继承(将公共的内容抽取到父类中)
- 示例
- 猫,狗… 是动物的一种
- 苹果,香蕉… 是水果的一种
- 学生,老师… 是人的一种
2.3 继承中成员变量访问特点
就近原则
- 子类局部范围找
- 子类成员范围找
- 父类成员范围找
- …
- 如果都没有就报错
代码【练习】
- 理解就近原则
public class Fu {
//年龄
public int age = 40;
}
public class Zi extends Fu {
//身高
public int height = 175;
//年龄
public int age = 20;
public void show() {
int age = 30;
System.out.println(age);
System.out.println(height);
//报错
// System.out.println(weight);
}
}
/*
测试类
*/
public class Demo {
public static void