章节10:封装、继承、方法的重写、多态
- 【1】封装
- 1.高内聚,低耦合
- 2.代码层面的体现
- 【2】继承
- 【3】方法的重写
- 【4】多态
【1】封装
1.高内聚,低耦合
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
- 低耦合:仅对外暴露少量的方法用于使用。
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可拓展性、可维护性,提高程序的安全性,这就是封装性的设计思想。
2.代码层面的体现
以属性为案例进行封装(方法也可以封装):
- 权限修饰符:将属性私有化,被private修饰
- 提供public修饰的方法让别人访问使用
- 外界通过方法来使用属性是受到程序员的制约的,不能随意访问使用属性
ps:可以利用IDEA快捷键生成:alt+insert–>Getter and Setter
【2】继承
类是对对象的抽象,而继承是对类的抽象(从一些类抽取出相同的东西,抽象出一个父类)
Java中继承语法格式:子类extends父类
public class Student extends Person{
}
继承的好处;
- 提高了代码的复用性
- 便于代码的扩展
- 是多态使用的前提
【3】方法的重写
子类可以对父类的方法进行重写,与C++相同
方法的重写有严格的格式要求:
子类的方法名、参数列表(个数、类型、顺序)要完全跟父类一致
重写和重载的区别:
- 重载:在同一个类中,方法名相同,形参列表不同,多个方法构成重载。
- 重写:在不同类中,子类不想直接使用从父类继承的方法,而要进行重写。
【4】多态
不用根据不同动物写不同的重载方法play,只需要将Cat、Dog的父类Animal作为对象参数;
shout是Animal都有的行为,在Cat、Dog里重写shout方法;
public class Animal {
public void shout(){
System.out.println("shout");
}
}
public class Cat extends Animal {
public void shout() {
System.out.println("miao");
}
}
public class Dog extends Animal{
public void shout(){
System.out.println("wang");
}
}
public class Girl {
public void play(Animal a){
a.shout();
}
}
public class main {
public static void main(String[] args) {
Girl g=new Girl();
Animal a=new Animal();
Dog d=new Dog();
Cat c=new Cat();
g.play(a);
g.play(c);
g.play(d);
}
}
- 多态的三要素:继承、重写、父类引用指向子类对象
- 多态的好处:提高代码扩展性