向上转型:父类类型的引用 引用子类对象
发生向上转型的时机:直接赋值;函数传参;函数的返回值
重写:满足三个 1、函数名相同;2、形参列表相同(类型、个数);3、返回值相同。
重载: 1、函数名相同;2、 形参 列表不同(类型、个数);3、返回无所谓
动态绑定 一个父类Animal,两个子类Dog,Bird.如果父类中有某个方法但子类中没有,那么编译器会调用父类的,如果子类中也有,那么会调用子类的。
多态:通过一个引用 调用方法之后,可以有多种表现的形式,这种现象或者思想就叫多态。
重写的注意事项:1、被final修饰的方法 叫做密封方法 代表当前方法是不能被重写的
2、被static修饰的方法是不可以被重写的
3、被private修饰的方法是不能被重写的
4、子类的访问修饰权限 要大于等于 父类的访问权限
package december2;
class Shape{
public void draw(){
System.out.println("这是画图形的方法");
}
}
class Cycle extends Shape{
@Override
public void draw() {
System.out.println("画圆圈⚪");
}
}
class Rece extends Shape{
@Override
public void draw() {
System.out.println("画方片♦");
}
}
class Flower extends Shape{
@Override
public void draw() {
System.out.println("画花❀");
}
}
public class TestDemo2 {
public static void drawMap(Shape shape) {
shape.draw();
}
public static void main(String[] args) {
Cycle cycle = new Cycle();
drawMap(cycle);
drawMap(new Rece());
drawMap(new Flower());
drawMap(new Cycle());
}
}
多态的好处:
能够降低代码的“圈复杂度”避免使用大量的if-else(圈复杂度:条件语句和循环语句出现的个数)
可扩展能力强:代码改动成本较低
多态缺陷:
代码的运行效率降低