Presentation is loading. Please wait.

Presentation is loading. Please wait.

辅导课程十五.

Similar presentations


Presentation on theme: "辅导课程十五."— Presentation transcript:

1 辅导课程十五

2 动态绑定/多态 (dynamic-binding late-binding runtime-binding polymorphism)
动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 上面例子中,根据 Lady 对象的成员变量 pet 所引用的不同的实际类型而调用相应的 enjoy()方法。 TestPolymorph/Test.java

3 heap stack name:”catname” enjoy() Animal:enjoy() c:xx code seg

4 heap stack name:”catname” enjoy() eyeColor:”blue” Animal:enjoy() Cat:enjoy() c:xx code seg

5 heap stack name:”catname” enjoy() eyeColor:”blue” Animal:enjoy() Cat:enjoy() c:xx code seg

6 heap stack name:”catname” enjoy() eyeColor:”blue” name:”l1” Animal:pet
l1:xx Animal:enjoy() Cat:enjoy() c:xx code seg

7 根据上面的程序,构造“Bird”类,继承“Animal”类。要求: 增加“毛色(String)”属性。
多态的优点 课堂练习 TestPolymorph/Test.java 根据上面的程序,构造“Bird”类,继承“Animal”类。要求: 增加“毛色(String)”属性。 具有和“Dog”类相似的重载构造方法。 重写“Animal”类的enjoy()方法 测试。思考:需要修改“Lady”类的方法吗?

8 要有继承;要有重写;父类引用指向子类对象
多态的优点 class Bird extends Animal { private String featherColor; Bird(String n,String f) { super(n); featherColor = f; } public void enjoy() { System.out.println(“鸟叫声 “); public class Test { public static void main(String args[]){ Bird b = new Bird(“birdname“, “green“) Lady l3 = new Lady(“l3“, b)); l3.myPetEnjoy(); } 多态的存在要有3个必要条件: 要有继承;要有重写;父类引用指向子类对象

9 抽 象 类 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法(相当于C++中的纯虚函数)。 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。如果重写不了,应该声明自己为抽象。 抽象类不能被实例化。 抽象方法只需声明,而不需实现。 abstract class Animal { private String name; Animal(String name) { this.name = name; } public abstract void enjoy(); class Cat extends Animal { private String eyesColor; Cat(String n,String c) { super(n); eyesColor = c; public void enjoy() { System.out.println(“猫叫声....."); TestAbstract/Test.java

10 heap stack name:”catname” enjoy() c:xx code seg

11 heap stack name:”catname” enjoy() eyeColor:”blue” Cat:enjoy() c:xx code seg

12 heap stack name:”catname” enjoy() eyeColor:”blue” Cat:enjoy() c:xx code seg

13 heap stack name:”catname” enjoy() eyeColor:”blue” name:”l1” Animal:pet l1:xx Cat:enjoy() c:xx code seg


Download ppt "辅导课程十五."

Similar presentations


Ads by Google