首页 > 代码库 > 黑马程序员-面向对象-多态
黑马程序员-面向对象-多态
---------------------- <a href=http://www.mamicode.com/"http://edu.csdn.net"target="blank">ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------->一多态的前提:(1)要有继承关系(或者实现关系) (2)方法的重写 (3)父类的引用指向了自己子类的对象 class Fu { public void show() { System.out.println("fu show"); } } class Zi extends Fu { public void show() { System.out.println("zi show"); } } class Day02 { public static void main(String[] args) { Fu f = new Zi(); f.show(); } } 二多态间编译成员的特点: (1)成员变量:编译看左边,运行看左边 (2)成员函数:编译看左边,运行看右边 class Fu { public int num = 10; public void show() { System.out.println("fu show"); } } class Zi extends Fu { public int num = 20; public void show() { System.out.println("zi show"); } } class Day02 { public static void main(String[] args) { Fu f = new Zi(); //编译看左边(fu中的show方法) //运行看右边(zi中的show方法) f.show(); //编译和运行都看左边的(fu中的num) System.out.println(f.num); } } 三.多态中的向上转型和向下转型 (1)向上转型:小转大 (2)向下转型:大转小 向下转型是为了用到子类里的特有方法 注解:建立子类对象,调用子类的特有方法也可以,但是如果这样做 内存中就有了两个子类的对象,效率低,不利于节省内存空间 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 Day02 { public static void main(String[] args) { Fu f = new Zi();//向上转型 f.show();//zi show Zi z = (Zi)f;//向下转型 z.method(); } } 四.多态的定义&弊端&好处 定义:对象在不同时刻表现出来的不同状态 弊端:父类的引用不能使用子类的特有功能 好处:提高了代码的扩展性和可维护性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。