A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 敲敲敲dm 中级黑马   /  2016-8-8 10:27  /  782 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class MemberPoints {
    public static void main(String[] args) {
       Person p = new Student();  //为什么这不报错,求教
        p.print();
    }
}

    interface Person{
        public static final int age=10;
        void print();
        //public Person(){}  
    }
    class Student implements Person{
        public void print(){
            System.out.println( age);
        }
    }
为什么

14 个回复

倒序浏览
因为 new Student
回复 使用道具 举报
这并没有new Person(),new 的是 Student(),请参考父类引用指向子类对象相关知识
回复 使用道具 举报
这里是父类引用指向子类对象,
回复 使用道具 举报
这个跟多态一样吧,这里是父类引用指向子类对象!
回复 使用道具 举报
这个是多态
回复 使用道具 举报
这个是多态,类似于Student是Person的子类
回复 使用道具 举报
多态的,我们老师的解释:元神是Student,Person是肉身。   编译的时候看左边,即Person中有没有print方法,运行看右,也就是p.print()其实调的是子类中的print方法,   over
回复 使用道具 举报
多态的一个应用
回复 使用道具 举报
这就是多态的表现形式。
回复 使用道具 举报
这个是多态,父类引用指向子类对象
回复 使用道具 举报
Maroon 发表于 2016-8-9 00:42
这个是多态,父类引用指向子类对象

谢啦 现在搞懂了
回复 使用道具 举报

谢谢帮忙,谢谢啦,现在弄懂了
回复 使用道具 举报
这个是多态的知识
多态的前提是第一是必须有继承(类与类产生关系),然后必须有复写(重写)
父类或者是父接口指向子类对象
因为学生属于人吧
直接可以用person p = new Student()
person是父类 可以直接指向子类对象
这样的例子还有很多,比如动物 和猫,狗都是多态
多态的好处就是提高了代码的复用性
多态中成员函数 变量 静态方法的特点
静态变量 和静态方法都是运行和编译都看左边
而成员方法是编译看左边  运行看右边(因为有重写)

如果想判断这个字了i是不是属于父类可以使用instanceOf这个关键字

注意:多态中将子类的权限=提升到了父类型
但是父类只能访问父类自己的 不能访问子类特有的数据,如果想访问必须进行向下转型如:
Student s = (Student)p;
用s去调用子类的特有属性
回复 使用道具 举报
这是多态,接口实现类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马