今天讲一下多态如何访问子类功能。
先建几个类
- dongwu
- cat
- dog
- cz(操作类)
- ff(main方法)
package duotaizhuanxing;
public class dongwu {
public void chi(){
System.out.println("吃东西");
}
}
```java
重写方法
package duotaizhuanxing;
public class cat extends dongwu{
@Override
public void chi() {
System.out.println("猫吃鱼");
}
public void zy(){
System.out.println("抓老鼠");
}
}
package duotaizhuanxing;
public class dog extends dongwu{
@Override
public void chi() {
System.out.println("吃骨头");
}
public void zy(){
System.out.println("看大门");
}
}
操作
package duotaizhuanxing;
public class cz {
public void chi(dongwu a){
a.chi();
}
}
执行
```javapackage duotaizhuanxing;
public class ff {
public static void main(String[] args) {
//1.执行类的内容
cz z=new cz();
cat c=new cat();
z.chi(c);
dog d=new dog();
z.chi(d);
//2.访问子类其他的方法
dongwu a=new cat();
//动物a是一只猫 a是动物
cat w=(cat) a;
//因为a是一只猫 所以可以强制转换成猫
w.zy();
w.chi();
a=new dog();
dog r=(dog) a;
r.zy();
r.chi();
// a=new cat(); 只有新实际化动物接下来的程序才不会报错
// cat p=(cat) a; //由上面的可知 a已经被实例化 是一条狗了
// p.chi(); //所以在转换的过程中 如果不新实际化
// p.zy(); // 强制转换则会报错
//3.生成一只猫调用其方法
dongwu o=new cat();
o.chi();
}
}