多态到底是什么?
- 从字面上看:多态就是
多种形态
- 多态就是对象拥有多种表达方式
- 打一个比方:你在中国,你可以说你在中国,你也可以说你在亚洲、在世界上,在地球上……
- 多态就是一个对象的多种表现形态,同一个对象,在不同的时候不同的表现
看完上面的,相信你已经有了一个概念
多态的一个前提
- 要有继承或者是实现关系
- 要有父类引用指向子类对象
- 要有方法的重写
多态中的成员访问特点
- 成员变量:
编译看左边
,执行看左边
- 成员方法:
编译看左边
,执行看右边
代码:
父类:
代码语言:javascript复制/**
* 父类
*/
public class Ojbk {
public String giao = "giao";
public int giaog = 66;
public void laoba(){
System.out.println("老八");
}
}
子类
代码语言:javascript复制/**
* 是Ojbk类的子类
*/
public class Subclassing extends Ojbk {
public String giao = "no giao";
public int giaog = 555;
@Override
public void laoba() {
System.out.println("就不输入老八");
}
}
调用测试类:
代码语言:javascript复制/**
* 测试类
*/
public class RunTexit {
public static void main(String[] args) {
Ojbk diao = new Subclassing();
//调用的成员变量,都是父类中有的
System.out.println(diao.giao);
System.out.println(diao.giaog);
}
}
- 上面的代码可以看出来
- 1 只有父类中有的,才能被调用
- 2.父类没有的 调用不了
- 3.调用方法时 因为子类重写了父类的方法,所以执行的是子类重写后的
多态的好处和弊端
好处
- 提高了程序的扩展性
- 具体:定义方法时,使用父类类型作为参数,将来在使用的时候,使用具体的子类型参与操作
弊端
- 不能使用子类的特有方法和功能
- 也就是不能用子类的东西 解决方法就是 向下转型 概念:从父到子 格式:子类类型 子类名称 = (子类类型)父类 这样就可以使用子类的方法了