面向对象_继承和多态
面向对象的特征:封装、继承、多态、抽象
一、继承概述:
多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可。
多个类可以称为子类,单独这个类称为父类或者超类,基类等。
子类可以直接访问父类中的非私有的属性和行为。
通过extends关键字让类与类之间产生继承关系。
二、继承的好处?
1、提高了代码的复用性。
2、继承的出现让类与类之间产生了关系,提供了多态的前提。
(Java中只支持单继承)
三、定义继承
所属关系: is a 的关系。
public class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
// //如果父类没有显式的定义任何构造方法,会自动生成以下无参构造
// public Animal(){
// }
public void eat(String food){
System.out.println(name + "正在吃" + food);
}
}
四、子父类中成员变量的特点。
1.在子父类中,成员的特点体现。
(一)、成员变量
(二)、成员函数
(三)、构造方法、
(一)、成员变量
1.当本类中的成员和局部变量同名时用this区分
2.当子父类中的成员变量同名用super关键字区分父类。
this和super的用法很相似。
this :代表一个本类对象的引用。
super: 代表一个父类空间
(二)、成员函数
当子父类中出现成员函数一模一样的情况,会优先运行子类的函数。
这种现象,称为覆盖操作。这是函数在子父类中的特性。
函数两个特性:
1,重载。同一个类中。overload
2,覆盖。子类中。覆盖也称为重写,覆写。override
五、多态的概述
指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。
Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。