- 一个对象,多种形态
- 引用对象只能调用父类中存在 或 重写的方法
父类可以代表子类
测试代码:
- 多态下创建对象:
- 父类 对象名 = new 子类([参数]);
引用类型 引用对象 = new 实际类型([参数]); -
代码案例:
-
package com.zking.qiao;
-
/**
-
* 父类 动物类
-
* @author Administrator
-
*
-
*/
-
public class Animal {
-
int age;
-
String name;
-
public void eat() {
-
System.out.println("吃嘛嘛香~");
-
}
-
}
-
package com.zking.qiao;
-
/**
-
* 子类 狗类
-
* @author Administrator
-
*
-
*/
-
public class Dog extends Animal{
-
//重写 吃方法
-
public void eat() {
-
System.out.println("蘸着吃");
-
}
-
//新写 跑方法
-
public void run() {
-
System.out.println("越跑越快");
-
}
-
}
-
package com.zking.qiao;
-
/**
-
* 子类 猫类
-
* @author Administrator
-
*
-
*/
-
public class Cat extends Animal{
-
}
-
package com.zking.qiao;
-
/**
-
* 测试 动物类
-
* @author Administrator
-
*
-
*/
-
public class Test {
-
public static void main(String[] args) {
-
//创建对象 这个动物是只狗
-
//父类 对象名 = new 子类([参数]);
-
Animal a = new Dog();
-
a.eat();//调用吃方法
-
//因为 重写 方法,所以执行为子类的吃方法
-
//把引用对象转换为实际类型
-
//引用类型 引用对象 = new 实际类型([参数]);
-
Dog d = (Dog)a; //强制转换:(转换后的类型)要转换的数据
-
d.run();//用强转实现 执行狗的跑方法
-
//把狗的引用对象 转换成 猫
-
Cat c = (Cat)a;
-
//执行不了,会出现
-
//ClassCastException: 类型转换异常
-
}
-
}