10、多态
来源:互联网 发布:清华软件研究生怎么样 编辑:程序博客网 时间:2024/05/16 17:41
一 多态
1.1 动态绑定/多态
动态绑定是指“在执行期间(而非编译期间)”判断所引用对象的实际类型,根据实际的类型调用其相应的方法
如下面一段代码
class Animal {
private String name;
Animal(String name) {
this.name = name;
}
public void enjoy() {
System.out.println("叫声......");
}
}
class Cat extends Animal {
private String eyeColor;
Cat(String n, String c) {
super(n);
eyeColor = c;
}
public void enjoy() {
System.out.println("猫叫声......");
}
}
class Dog extends Animal {
private String furColor;
Dog(String n, String c) {
super(n);
furColor = c;
}
public void enjoy() {
System.out.println("狗叫声......");
}
}
class Lady {
private String name;
private Animal pet;
Lady(String name, Animal pet) {
this.name = name;
this.pet = pet;
}
public void myPetEnjoy() {
pet.enjoy();
}
}
public class TestPolymorph {
public static void main(String[] args) {
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
l1.myPetEnjoy();
l2.myPetEnjoy();
}
}
其内存结构如下图所示:
以l1为例,l1类型为Lady,对象有name和pet,其中pet是Animal类型。name为l1,pet为c,但是由于pet为Animal类型,所以pet只能访问c的name属性;
l1.myPetEnjoy(),其中myPetEnjoy()调用enjoy()方法,调用的是实际的enjoy()方法,而不是引用类型的方法。所以调用的是c对象里面的enjoy()方法,而不是c的引用方法。所以指向Cat类里面的enjoy()方法
多态的三个必要条件:
- 要有继承
- 要有重写
- 父类引用指向子类对象
1.1.1 多态的好处和弊端
- 多态的好处:
- 提高了程序的维护性
- 提高了程序的扩展性
- 多态的弊端
- 不能访问子类特有功能
阅读全文
0 0
- 10、多态
- java--10--多态
- 10 面向对象四-多态
- Java基础10--多态--内部类
- java学习笔记10——多态
- java笔记10 多态 Object类
- Java基础学习10_多态
- 小朋友学Java(10):多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 多态
- 9、super关键字
- 试题17:合并两个排序的链表
- 20个高级java开发面试题(带答案)
- HDOJ2065"红色病毒"问题
- chapter5:分类的进一步探讨---算法评估及kNN
- 10、多态
- 【loadrunner】手写http请求脚本
- 11、抽象类
- Java和PHP在Web开发方面的比较
- 理解Spring Web Security实现Ajax登录
- 12、final关键字
- ubuntu各个版本下载
- 13、interface,接口
- Trie树-Java实现