学【Java多态】-- 写高质量代码

 多态的实现条件

在java中要实现,必须要满足如下几个条件,缺一不可。

  • 1.必须在继承体系下
  • 2.子类必须要对父类中的方法进行重写
  • 3.通过父类的引用调用冲写的方法。 

 想要真正的学好多态需要去学习一些前置知识,那我们直接开始吧!

重写 

重写:也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

【重写的规则】

  •  子类在重写父类的方法时,返回值,方法名,参数列表,要保持完全一致。
  •  访问权限不能比父类中被重写的方法的访问权限更低。
  •  父类被static、private修饰的方法、构造方法都不能被重写。
  • 重写方法可以使用,@Override 注解来显式指定,相当于多一层编译器校验。

【重写和重载的区别】
 学【Java多态】-- 写高质量代码_第1张图片

 动态绑定与静态绑定 

 静态绑定:也称为前期绑定(早绑定),即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。典型代表函数重载。

动态绑定:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法

向上转型 

向上转型简单来说就是把子类对象给父类。

学【Java多态】-- 写高质量代码_第2张图片

实际就是创建一个子类对象,将其当成父类对象来使用

语法格式

 这两行代码可以简化成一行代码。

Animal animal = new Dog("旺财",3);  //父类引用,引用了子类对象

 你看到的这个过程就是向上转型。

 向上转型的优点:让代码实现更简单灵活。
 向上转型的缺陷:不能调用到子类特有的方法。

向下转型 

将一个对象进行向上转型之后当成父类对象使用,在无法调用子类特有的方法,此时:将父类引用在还原为子类对象即可。

语法格式:

向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常。

多态 

多态的概念 

 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。

  • 多态是方法或对象具有多种形态,是面向对象的第三大特征
  • 多态前提是两个对象(类)存在继承关系,多态是建立在封装和继承基础之上的

学【Java多态】-- 写高质量代码_第3张图片

总的来说:同一件事情,发生在不同对象身上,就会产生不同结果。

 多态的应用

说明:如果我们想画一些图形出来,有花,圆形,三角形。

class Shape{
    public void draw(){
        System.out.println("画图形");
    }
}
class Rect extends Shape{
    @Override
    public void draw() {
        System.out.println("♦");
    }
}
class Cycle extends Shape{
    @Override
    public void draw() {
        System.out.println("⚪");
    }
}
class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println("❀");
    }
}
public class Test {
    public static void main(String[] args) {
        Shape[]shapes = {new Rect(),new Cycle(),new Flower()};
        for(Shape shape : shapes){
            shape.draw();
        }
    }
}

你可能感兴趣的:(java,开发语言)