标签:
多态:对象的多种形态
1.引用多态
父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
代码示例:
1 public class Parent{ 2 3 } 4 public class Son{ 5 6 } 7 public Test{ 8 public static void main(String[] arg){ 9 Parent p1 = new Parent();//父类的引用可以指向本类的对象 10 Parent p2 = new Son();//父类的引用可以指向子类的对象 11 //Son s1 = new Parent();//子类的引用指向父类对象,不允许 12 } 13 }
2.引用多态
创建本类对象时,调用的方法是本类方法
创建子类对象时,调用的方法为子类重写的方法或者继承的方法
代码示例:
1 public class Parent{ 2 public void do(){ 3 //代码块1 4 } 5 } 6 public class Son{ 7 public void do(){ 8 //代码块2 9 } 10 public void do1(){ 11 //代码块3 12 } 13 } 14 public Test{ 15 public static void main(String[] arg){ 16 Parent p1 = new Parent();//父类的引用可以指向本类的对象 17 Parent p2 = new Son();//父类的引用可以指向子类的对象 18 //Son s1 = new Parent();//子类的引用指向父类对象,不允许 19 p1.do();//执行代码块1,父类的引用调用本类的方法 20 p2.do();//执行代码块2,父类的引用调用子类重写的方法,如果没有重写,则是继承的方法 21 //p1.do1();//不能通过编译,父类的引用无法调用子类独有的方法 22 23 } 24 } 25 26 方法多态
引用类型转换:
1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
2.向下类型转换(强制类型转换),是大类型到小类型
3.instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题
代码示例:
1 public class Parent{ 2 3 } 4 public class Son{ 5 6 } 7 public class Son1{ 8 9 } 10 public Test{ 11 public static void main(String[] arg){ 12 Son s1 = new Son();//指向本类的对象 13 Parent p1 = s1;//自动类型提升,向上类型转换 14 Son s2 = (Son)p1;//向下类型转换,强制类型转换 15 16 if(p1 instanceof Son1){//此处返回值为假 17 18 }else{ 19 20 } 21 if(p1 instanceof Son){//此处返回值为真 22 23 }else{ 24 25 } 26 } 27 }
标签:
原文地址:http://www.cnblogs.com/brainit/p/5560851.html