黑马程序员技术交流社区

标题: 求问继承里的双飞现象怎么解释 [打印本页]

作者: 绯影    时间: 2016-11-5 10:52
标题: 求问继承里的双飞现象怎么解释
public class Test3 {
        public static void main(String[] args) {
                Son s = new Son();
                s.setName("张三");                                //子
                System.out.println(s.getName());               //张三
                System.out.println(s.name);                       //null
        }
}
class Father {
        private String name;               
        public void setName(String name) {       
                this.name = name;        //this==父
                this.play();                         //this==子
        }
        public String getName() {                       
                return this.name;
        }
        public void play(){
                System.out.println("父");
        }
}
class Son extends Father {
        String name;
        public void play(){
                System.out.println("子");
        }
}
1.创建对象时是Son s = new Son();自己创建自己的对象,并没有父类引用子类对象
2.当s.setName("张三");赋值时,this.name走的是父类,this.paly()走的是子类,同一个this走的是不同类,即双飞
3.因此当System.out.println(s.getName());打印的是张三,而System.out.println(s.name);打印的却还是null
作者: 潘老板    时间: 2016-11-5 21:45
这个不错,挺有意思




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2