(5)封装继承多态

📅 2026/7/3 18:51:08 👁️ 阅读次数 📝 编程学习
(5)封装继承多态

这三个是面向对象的三个特性。主要目的就是为了对代码进行解耦重构。

一、封装

封装就是将数据和对数据的操作封装在一个类里面,从外部不可访问,只能通过给出的访问接口对数据进行处理。

二、继承

人有父子关系、母子关系,类也有!这么做的目的主要是为了让子类不那么的冗余,所有和父类有关系的都能进行继承访问。

// 继承的语法publicclassDeriveextendsBase{}

Java语法只支持单继承,也就是说一个类最多只能有一个父类

1、构造函数

如果你构造一个子类对象,在子类对象初始化之前,父类对象要先进行初始化。
调用父类构造或者当前类的构造,构造函数必须放在第一句

publicclassDeriveextendsBase{intb;Derive(){//super()是在子类中调用父类的构造函数//如果一个父类只有默认构造函数,super()可写可不写//如果一个父类实现了有参构造,这个super()必须显示调用,传参super();b=1;}}

2、this指针

  1. this主要指向的是调用对象。
  2. 主要区分和类成员属性名、方法名相同的变量名、方法名
    this指针你可以理解为一个隐形的参数,传参在每个类方法的第一个参数位置上,指向调用的对象
publicclassBase{inta;// 在这里就是主要对参数a和类属性a进行区分publicBase(inta){this.a=a;}}

3、super指针

这个指针和this指针差不多功能,但是主要是为了区分和父类成员属性名、方法名相同的变量名、方法名。

publicclassDerive{inta;// 在这里就是主要对参数a和类属性a进行区分publicDerive(inta){// 如果父类是有参构造,需要往super()里面进行传参super()this.a=a;}}

4、final关键字

  1. final修饰变量x,x不能被修改。
  2. final修饰成员变量,成员变量必须被初始化
  3. final修饰类,类不能被继承。
  4. final修饰类方法,方法不能被重写。

三、多态

多态就是同一种行为具有不同的表现形式。主要表现在猫狗都会叫,但是叫的行为不一样,一个“喵喵叫”,一个“汪汪叫”。
多态 = 动态绑定 + 继承 + 重写

1、多态的构成条件

  1. 必须在继承关系体系下。
  2. 必须子类重写父类的方法。
  3. 必须通过父类引用调用重写方法。

[!NOTE] 注意!!!

  • 子类方法的权限一定要大于等于父类方法的权限。
  • 被private修饰的成员方法不能被重写。
  • 被static修饰的成员方法不能被重写。
  • 被final修饰的成员方法不能被重写。
publicclassAnimal{publicvoidbark(){System.out.println("Animal叫!!!");}}-------------------------------------------publicclassCatextendsAnimal{publicvoidbark(){System.out.println("Cat叫!!!");}}-------------------------------------------publicclassMain{publicstaticvoidmain(String[]args){Animalanimal1=newCat();animal1.bark();}}

2、重载、重写

(1)重载

  • 方法名相同
  • 参数列表不同(参数的个数、顺序、类型)
  • 返回值不做要求!!!
    (2)重写
  • 必须在继承体系下
  • 子类重新定义父类的非静态、非final方法
  • 返回值、方法名、参数列表均相同

3、向上 转型、向下转型

向上转型是将子类引用赋值给父类。
向下转型是将父类引用赋值给子类(父类引用必须是子类)。
向下转型关键字instanceof

publicclassMain{publicstaticvoidmain(String[]args){// 向上转型Animalanimal=newCat();// 向下转型if(animalinstanceofCat){Catcat=(Cat)animal;}}}