大型企业局域网组网方案,seo页面链接优化,黄埔网站建设 信科网络,网页设计实训多态
概念 多态是同一个对象#xff0c;在不同时刻表现出来不同的形态#xff0c;称之为多态。 例如#xff1a;水#xff0c;我们把水理解成为一个对象#xff0c;而水会有不同的形态#xff0c;比如 液态水、冰块、水蒸气 多态的前提 有继承/实现关系#xff08;继承…多态
概念 多态是同一个对象在不同时刻表现出来不同的形态称之为多态。 例如水我们把水理解成为一个对象而水会有不同的形态比如 液态水、冰块、水蒸气 多态的前提 有继承/实现关系继承是类和类之间的关系实现是类和接口直接的关系有方法重写继承之后要对方法进行重写有父类的引用指向子类的对象。例如Animal a new Cat(); 多态成员的访问特点非常重要一定得理解请先看口诀再结合图片下方注意文字和图片理解 口诀父类是左边子类是右边 对于成员变量编译看左边执行看左边对于成员方法编译看左边执行看右边 注意 ①先解释下口诀编译看左边也就是看左边有无这个成员有的话编译才通过我们可以看到图片一和图片二两张都是因为左边父类中无 爆红的这个成员所以报错 ②对于成员变量编译看左边(也就是看左边父类中有无这个成员有的话编译通过)执行看左边(我们看第三张图可以看到最中运行的结果是左边父类中的成员变量值) ③对于成员方法编译看左边(也就是看左边父类中有无这个成员有的话编译通过)执行看右边(我们看第三张图可以看到最中运行的结果是右边子类中的成员方法因为方法重写了)
多态的好处和弊端 好处提高了程序的扩展性定义方法的时候使用父类作为参数将来在使用的时候使用具体的子类参与操作 弊端不能使用子类特有的功能必须父类中有【回想口诀只有编译通过才行】
多态的转型 多态的弊端是不能使用子类特有的功能怎么办呢就提出我们多态的转型。 类型方向向上转型从子到父父类引用指向子类对象Animal a new Cat();向下转型从父到子父类引用转为子类对象Cat b (Cat)a 注意向下转型有个前提得是同一种对象 Animal a new Cat(); // a 是Animal类型但是本质是 猫 Dog d (Dog)a; // 很明显这行就错了(Dog)a 相当于强转但是 猫怎么能转成狗呢 // 动物类
class Animal{public void show(){System.out.println(动物);}
}
// 狗类
class Dog extends Animal{public void show(){System.out.println(狗);}public void speak(){System.out.println(汪汪);}
}
// 猫类
class Cat extends Animal{public void show(){System.out.println(猫);}public void eat(){System.out.println(小鱼干);}
}public class Test {public static void main(String[] args) {// 向上转型Animal a new Cat();Animal b new Dog();// 调用方法(父类对象调用多态的形式记得口诀)a.show();b.show();// 编译不通过因此爆红
/* a.speak();a.eat();*/// 向下转型Cat c (Cat)a;Dog d (Dog)b;// 调用方法(子类对象调用)c.eat();c.show();d.speak();d.show();/* Cat c1 (Cat)b;c1.speak();*/}
}多态很重要一定要理解 其他两大特征可参考下面这两篇文章 面向对象的三大特征之一继承 面向对象的三大特征之一封装