码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA多态需要注意的一些问题

时间:2014-11-01 06:12:01      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   使用   java   sp   div   问题   

public class MainTest {
    static class A {
        public int i;
        public void f() {
            System.out.println("AAAAA");
        }

    }
    static class B extends A {
        public void f() {
            System.out.println("BBBBB");
        }
        public void g() {
            System.out.println("GGGG");
        }
    }

    public static void main(String[] args) {

        A a1 = new B();// 正确,子类对象赋值给父类引用
//        B b1 = (B) new A();// 错误,父类对象不能直接赋值给子类引用

        A a2 = new B();
        a2.i = 1; // 正确,访问父类属性
        a2.f(); // 正确,访问子类重写的父类的子类方法
//        a2.g(); // 错误,不能访问子类中特有的方法

        A a3 = new A();
        B b3 = new B();
//        b3 = (B) a3;// 错误,父类引用指向的是父类对象,不能强制转换为子类引用。
        
        A a4 = new B();
        B b4 = new B();
        b4 = (B) a4;// 正确,此时父类引用指向的是子类对象。可以强制转换为子类引用,必须得使用强转,
    }
}

1)子类对象可以直接赋值给父类引用,但父类对象不能直接赋值给子类引用。因为子类可以看作一个特殊的父类,即为父类的一种,但是父类在任何情况下都不能当作一个子类。例如:狗是动物的子
类,狗可以看作一种动物,但是动物不一定是狗。
            A a1 = new B();//正确,子类对象赋值给父类引用
            B b1 = new A();//错误,父类对象不能直接赋值给子类引用


2)父类引用指向子类对象的引用类型只能访问父类的一些属性和方法,无法访问子类特有的属性和方法。
            A a2 = new B();
            a2.i = 1;    //正确,访问父类属性
            a2.f();    //正确,访问子类重写的父类的子类方法
            a2.g();    //错误,不能访问子类中特有的方法


3)当父类引用指向一个子类对象时,才可以把父类引用强制转换为子类引用。
            A a3 = new A();
            B b3 = new B();
            b3 = (B)a3;//错误,父类引用指向的是父类对象,不能强制转换为子类引用。

            A a4 = new B();
            B b4 = new B();
            b4 = (B)a4;//正确,此时父类引用指向的是子类对象。可以强制转换为子类引用,但是必须使用强制转换

 

 

     博客大部分来自网络,如有涉及到版权问题请联系本人删除或修改,博客内容主要为自己学习和笔记使用并希望能给有需要的朋友提供一些帮助,不喜勿喷,欢迎各位指出错误,一起学习、进步。

联系邮箱:lxckokom@gmail.com

QQ:1129368407

JAVA多态需要注意的一些问题

标签:style   blog   color   ar   使用   java   sp   div   问题   

原文地址:http://www.cnblogs.com/kokom/p/4066300.html

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