首页 > 其他 > 详细

多态性

时间:2018-01-14 16:30:01      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:()   pos   如果   ava   安全   错误   ron   ring   args   

Java中多态性主要表现在两个方面:方法的重载和覆写对象的多态性

对象的多态性主要表现在以下两种类型:

  • 向上转型:子类对象->父类对象   父类 父类对象 = 子类实例;
  • 向下转型:父类对象->子类对象   子类 子类对象 = (子类)父类对象;

1、向上转型:用子类对象转型到父类对象调用的还是子类覆写过得方法,但注意这样的父类对象不能调用父类中没有的方法。此处的父类对象可以使接口。

 

 1 class A{
 2     void print1() {            //定义print1
 3         System.out.println("父类print1");}
 4 }
 5 class B extends A{
 6     void print1() {           //覆写父类的print1
 7         System.out.println("子类print1");}
 8     void print2() {
 9         System.out.println("子类print2");}
10 }
11 public class Test{
12     public static void main(String args[]) {
13         A a = new B();
14         a.print1();           //此处调用覆写过得print1
15     }
16 }

 

2向下转型过程中,分为两种情况:

情况一:如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。

情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。它可以使用instanceof来避免出错此类错误。

 

 1 class A{
 2     void print1() {            //定义print1
 3         System.out.println("父类print1");
 4 
 5     }
 6 }
 7 class B extends A{
 8     void print1() {           //覆写父类的print1
 9         System.out.println("子类print1");
10     }
11     void print2() {
12         System.out.println("子类print2");
13     }
14 }
15 public class Test{
16     public static void main(String args[]) {
17         A a = new B();        //转型成功
18         B b = (B)a;
19 //        A a = new A();        //转型失败
20 //        B b = (B)a; 
21         b.print1();
22     }
23 }

 

 

 

 

多态性

标签:()   pos   如果   ava   安全   错误   ron   ring   args   

原文:https://www.cnblogs.com/mzct123/p/8283526.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号