java多态基础入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 多态概述

●多态概述

•某一个事物,在不同时刻表现出来的不同状态。

•举例:

•猫可以是猫的类型。猫 m = new 猫();

•同时猫也是动物的一种,也可以把猫称为动物。

•动物 d = new 猫();

•在举一个例子:水在不同时刻的状态

●多态前提和体现

•有继承关系

•有方法重写

•有父类引用指向子类对象

●1:通过猫这个小动物,说猫可以被称为猫,也可以被称为动物。在不同时刻,

猫表现出的不同状态,来说明多态。

多态案例及成员访问特点

●多态案例

•按照前提写一个多态的案例

•成员访问特点

●成员变量

●编译看左边,运行看左边

●成员方法

●编译看左边,运行看右边

●静态方法

●编译看左边,运行看左边

所以前面我说静态方法不能算方法的重写

面试题:

1:看程序写结果(先判断有没有问题,如果没有,写出结果)class Fu

{

public void show()

{

System.out.println("fu show");

}

}

class Zi extends Fu

{

public void show()

{

System.out.println("zi show");

}

public void method()

{

System.out.println("zi method");

}

}

class Test

{

public static void main(String[] args)

{

Fu f = new Zi();

f.method();

}

}

2:看程序写结果(先判断有没有问题,如果没有,写出结果)class A

{

public void show()

{

show2();

}

public void show2()

{

System.out.println("我");

}

}

class B extends A

{

public void show2()

{

System.out.println("爱");

}

}

class C extends B

{

public void show()

{

super.show();

}

public void show2()

{

System.out.println("你");

}

}

public class Test

{

public static void main(String[] args)

{

A a = new B();

a.show();

B b = new C();

b.show();

}

}

多态的好处和弊端

●多态的好处

•提高了程序的维护性(由继承保证)

•提高了程序的扩展性(由多态保证)

●多态的弊端

•不能访问子类特有功能

•那么我们如何才能访问子类的特有功能呢?

•多态中的转型

提高程序的扩展性。

3 多态中的转型问题

●向上转型

•从子到父

•父类引用指向子类对象

●向下转型

•从父到子

•父类引用转为子类对象

•多态成员访问及转型的理解

•孔子装爹案例

●1:案例演示时,子类提供一个父类没有功能。案例演示完毕后,画图解释。

●动物和猫,狗案例

●2:多态成员访问及转型的理解。孔子装爹案例

●3:判断下面的赋值哪些是正确的:最后,总结从右,往左看,是否能够读通。

如果可以,就正确,否则就错误。

●class Animal{}

●class Dog extends Animal{}

●class Cat extends Animal{}

●以及

●Animal p0 = new Animal();

●Dog p1 = new Dog ();

●Cat p2 = new Cat ();

●Animal p3 = new Dog ();

●Animal p4 = new Cat ();

●p0 = p1;

●p1 = p2;

●p1 = (Dog)p3;

●p2 = (Cat)p4;

4 多态练习

●猫狗案例练习多态版

●不同地方饮食文化不同的案例

•Person

•eat()

•SouthPerson

•eat()

•NorthPerson

•eat()

●1:人要吃饭

●2:南方人吃炒菜和米饭

●3:北方人吃烩菜和馒头

●先基本的调用,后多态调用。

5 抽象类概述

●抽象类概述

•回想前面我们的猫狗案例,提取出了一个动物类。并且我们在前面也创建过了动物对象,其实这是不对的。

为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。

●抽象类概述

•回想前面我们的猫狗案例,提取出了一个动物类。并且我们在前面也创建过了动物对象,其实这是不对的。

为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃

相关文档
最新文档