一、继承
1.定义:
当我们定义很多部分具有相同的属性和行为的类时,为了允许使用现有类的功能,并在无需改写原来的类的情况下,引入继承的概念。
我们把允许重用现有类称为基类(父类),由基类派生出来的类称为派生类(子类)。
2.基本语法:
```java
class 类名 extends 父类名{
}
java类的继承通过关键字extends完成,子类继承父类所有的属性和行为。
如果没有指定的父类,那么java编译器默认该类的父类为Object。
代码示例:
class Animal{
protected String name;
protected int age;
protected String sex;
public Animal(String name){
this.name = name;
}
public void eat(){
System.out.println(name+" eat");
}
}
class Cat extends Animal{
public Cat(String name){
//编译器默认调用的是父类的默认构造函数,super()可以省略
super(name);//如果父类只有一个带参数的构造函数,这里不能省略
this.name = name;
}
public void catchMice(){
System.out.println(name+"catchmice");
}
}
3.继承和组合的关系:
继承是建立一个新类,将其作为现有类的一个类型存在。我们可以采用现有类的形式,并在其中添加新代码。
组合是在新类里简单的创建原有类的对象,这种方法称为组合关系,因为新类是由现有类的对象合并而成。
4.super关键字的使用:
1>用于从派生类访问基类的成员
2>派生类要调用基类的构造方法super(),super()只能在派生类的构造方法中调用,位于方法首行
3>调用基类已被其他方法重写的方法
4>访问基类的数据成员:super.成员变量、super.成员方法
5.函数重写:
1>重写的实现原理:
子类方法实现将从父类继承下来的方法实现,进行了地址覆盖。
2>重写应满足下列条件:
(1)派生类中该方法的返回值和基类同名方法的返回值相同,参数列表相同
(2)派生类中的重写方法的访问权限不能比基类小。(权限的顺序为:public,protected,private)
(3)基类的abstract方法必须被派生类重写,否则派生类也必须是abstract
(4)基类的final方法不能被派生类重写
3>重写和重载的区别:
(1)所处作用域范围不同。重载是在同一个类中进行方法的定义,重写则是在父子类中进行方法的定义。
(2)定义方法不同。重载是方法名相同,参数列表不同,重写是方法名相同参数列表也相同。
二、多态
1.定义:
一个函数名根据对象不同对应不同实现
2.发生多态的三个条件:
1>继承
2>方法的重写
3>父类引用引用派生类对象(向上造型:基类的引用,引用的是派生类对象)
3.多态的实现原理:
地址覆盖
4.静多态:
静多态也称编译期多态,即方法重载。相同的函数名,根据形参类型个数的不同调用不同的方法。在编译期间就已经确定要调用的方法。
重载条件:在一个类,函数名相同,参数列表不同。
5.动多态:
动多态也称运行期多态,即方法重写。
来源:CSDN
作者:不会敲代码的毛毛
链接:https://blog.csdn.net/weixin_43851309/article/details/104510191