java多态的用法,优点和缺点
今天,我们一起来学习以下多态。 先说一下
优点
提高程序扩展性
缺点
多态不能访问子类特有的功能
首先 我们先创建6个类
- cat
- dog
- pig
- ff(方法)
- dongwu(父类)
- cz(操作使用)
定义一个父类的方法
package duotai;
public class dongwu {
public void chi(){
System.out.println("啥都吃");
}
}
子类
package duotai;
public class cat extends dongwu{
//重新父类方法
@Override
public void chi() {
System.out.println("猫吃鱼");
}
}
package duotai;
public class dog extends dongwu{
@Override
public void chi() {
System.out.println("吃骨头");
}
public void zy(){
System.out.println("看大门");
}
}
package duotai;
public class pig extends dongwu{
@Override
public void chi() {
System.out.println("猪吃青菜");
}
}
第一种写法 不方便 可读性低
package duotai;
public class cz {
//定义一个操作类
public void chi(cat x){
// cat x=new cat();
//这个方法里需要猫类型的对象
x.chi();
}
public void chi(dog z){
// dog z=new dog();
z.chi();
}
第二种
public void chi(dongwu a){
//以父类动物为参数
a.chi();
//dongwu a=new cat()
//dongwu a=new dog()
//dongwu a=new pig()
// a.zy(); 不能访问子类特有的功能
}
首先创建cz类的对象 在cz类的chi方法中 需要一个变量进行传递。以c创建实例对象猫的时候,c就成了一个实例。 在cz类的方法中缺少一个动物的变量, 所以直接以cz类的对象名去调用chi方法+(实例对象) 就可以输出对应的方法输出语句
package duotai;
public class ff {
public static void main(String[] args) {
cz z=new cz();
//创建操作对象
cat c=new cat();
//创建猫的对象
z.chi(c);
//把猫的对象传递到方法里
dog v=new dog();
z.chi(v);
//创建狗的对象
pig b=new pig();
z.chi(b);
}
}
