码迷,mamicode.com
首页 > 其他好文 > 详细

多态(重点:方法的多态性和对象的多态性)

时间:2017-08-22 23:12:05      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:round   技术   extend   类型   .com   对象   blog   new   str   

 

技术分享

父类引用变量强制转子类,子类的方法可以调用了
class A{
    public void say(){
        System.out.println("类A进行say");
    }
}

class B extends A{
    @Override
    public void say(){
        System.out.println("子类B进行say");
    }
    public void say1(){
        System.out.println("子类B进行say1");
    }    
}

class C extends A{
    @Override
    public void say(){
        System.out.println("子类C进行say");
    }
    public void say1(){
        System.out.println("子类C进行say1");
    }    
}

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A a1 = new B();//向上转型
        A a2 = new C();
        a1.say();// 子类B进行say
        a2.say();// 子类C进行say
        //a对象会遗失和父类不同的方法,a点不出来say1()这个方法
        B b1 = (B)a1;
        b1.say1();//子类B进行say1    
        b1.say(); //子类B进行say
    }
    
}

/*向上塑性的好处是,增加extensible,
增加一个实现类c,照样可以用A的引用变量.say()*/

—————————————————————————————————————————————————
接口类型强制转换成实现类类型
interface A{
    public void say();
}

class B implements A{
    @Override
    public void say(){
        System.out.println("子类B进行say");
    }
    public void say1(){
        System.out.println("子类B进行say1");
    }    
}


public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        A a = new B();
        a.say();//子类B进行say,点不出say1()
        B b =(B)a; //这里必须进行强制转换;接口类型a转类类型b
        b.say();//子类B进行say
        b.say1();//子类B进行say1

    }

}

 

多态(重点:方法的多态性和对象的多态性)

标签:round   技术   extend   类型   .com   对象   blog   new   str   

原文地址:http://www.cnblogs.com/cs-lcy/p/7413930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!