Java多态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多态相关的知识,希望对你有一定的参考价值。

多态:对象的多种形态

  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 }
引用类型转换

 

以上是关于Java多态的主要内容,如果未能解决你的问题,请参考以下文章

每个人单核苷酸多态性(SNP)形成的原因是啥?

多态性和动态铸造

Java多态——代码复用性

Java 多态

java多态/重载方法——一个疑难代码引发的讨论

Java 多态