Java基础笔记16-多态
1.简介
- 多态是同一个行为具有多个不同表现形式或形态的能力。
- 语法格式:父类类型 变量名 = new 子类类型();
- 必要注意点:必须是有继承或实现的关系,(而且有方法重写)。
- 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
- 多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
多态的基本使用举例:
public class DuoTaiDemo {
public static void main(String[] args) {
//定义一个新树对象
Tree tree1 = new Tree();
//向上转型,多态的默认语法格式
Plants tree2 = new Tree();
//调用方法
tree1.leaf();//植物都有叶子, 使用的是继承的父类方法
tree1.seed();//树的种子形态多种多样, 使用的是子类重写方法
tree1.root();//树的根蔓延范围很大, 子类特有方法
tree2.leaf();//植物都有叶子, 使用的是继承的父类方法
tree2.seed();//树的种子形态多种多样, 子类对象,子类中重写过此方法,就执行子类中的方法
//tree2.root();//由于tree2的类型为父类Plants,在子类中能直接使用的只有从父类中重写的方法,不能使用子类中特有的方法
//强制类型转换,让tree2转换成子类类型,从而使用子类中的特有方法
Tree tree3 = (Tree)tree2;
tree3.root();//树的根蔓延范围很大
}
}
class Tree extends Plants{
//树的种子
@Override
public void seed() {
System.out.println("树的种子形态多种多样");
}
//树的根
public void root() {
System.out.println("树的根蔓延范围很大");
}
}
class Plants{
//植物的种子
public void seed() {
System.out.println("植物都有种子");
}
//植物叶子
public void leaf() {
System.out.println("植物都有叶子");
}
}