Java面向对象之多态(向上、向下转型) 入门实例
2018-06-18 01:49:34来源:未知 阅读 ()
一、基础概念
多态:
重点是对象的多态性。某一事物的多种体现形态。
多态的作用:
1.提高了代码的扩展性,后期出现的功能,可以被之前的程序所执行。
2.不能使用子类特有的功能。只能使用覆盖父类的功能。
多态的前提:
1.必须要有继承关系或者实现关系。
2.通常对方法进行重写、覆盖。
3.父类或者接口要引用指向子类对象。
多态向上转型:
1.提高程序的扩展性,隐藏了具体子类型
2.只能使用父类中的功能,不能使用子类特有的功能。功能被限定了。
多态向下转型:
1.可以使用子类型的特有功能。
2.必须面对具体的子类型。
3.为了避免运行时出现ClassCastException 问题,需要用关键字instanceof来进行判断。
注意:
多态至始至终都是子类对象在做着类型的变化。
二、代码实例
1 //父类Animal 2 abstract class Animal 3 { 4 abstract void eat(); 5 abstract void sleep(); 6 } 7 8 //Dog类继承Animal类 9 class Dog extends Animal 10 { 11 /** 12 将Animal类中的方法重写 13 */ 14 void eat() 15 { 16 System.out.println("dog eat 吃骨头"); 17 } 18 void sleep() 19 { 20 System.out.println("dog sleep ....."); 21 } 22 23 /** 24 自己特有的方法 25 */ 26 void say() 27 { 28 System.out.println("dog say ....."); 29 } 30 } 31 32 //Cat类继承Animal类 33 class Cat extends Animal 34 { 35 /** 36 将Animal类中的方法重写 37 */ 38 void eat() 39 { 40 System.out.println("Cat eat 吃鱼"); 41 } 42 void sleep() 43 { 44 System.out.println("Cat sleep ....."); 45 } 46 } 47 48 class DuoTaiDemo 49 { 50 //封装Dog类的方法 51 public static void method(Dog d) 52 { 53 d.eat(); 54 d.sleep(); 55 d.say(); 56 } 57 58 //封装Cat类的方法 59 public static void method(Cat c) 60 { 61 c.eat(); 62 c.sleep(); 63 } 64 65 //封装父类Animal的方法 66 public static void method(Animal s) 67 { 68 s.eat(); 69 s.sleep(); 70 } 71 72 public static void main(String[] args) 73 { 74 Dog d1 = new Dog(); 75 method(d1); 76 77 Cat c = new Cat(); 78 method(c); 79 80 Animal s = new Dog(); //多态性,向上转型,将Dog提升为Animal。 81 method(s); //只能使用覆盖了父类Animal的eat方法和sleep方法。不能使用Dog类中自己的say方法。 82 83 Animal a = new Cat(); //多态性,向上转型。 84 method(a); 85 86 /** 87 向下转型,为了避免运行时出现ClassCastException 问题, 88 需要用关键字instanceof来进行判断。 89 */ 90 if( !(s instanceof Dog)) 91 { 92 System.out.println("类型不匹配"); 93 return ; 94 } 95 Dog d2 = (Dog)s; //多态性,向下转型。 96 d2.eat(); 97 d2.sleep(); 98 d2.say(); 99 } 100 }
三、运行代码
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash