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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

猜猜我是谁

初级黑马

  • 黑马币:22

  • 帖子:9

  • 精华:0

© 猜猜我是谁 初级黑马   /  2016-3-9 19:44  /  483 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

继承:
子类只能继承父类所有非私有的成员(成员方法和成员变量)

所以说父类定义的私有的成员变量不能被子类继承,例如说: private String name;
但是父类中定义的getName()方法和setName()方法不是私有的,可以被继承,
可是子类中并没有该成员变量 name,调用 setName()方法的时候赋值是赋值给谁,父类
中的name不是被设定成私有的不能继承吗?

我尝试了一下,虽然B中并没有name,但是依然赋值成功了.但是不明白原因.
class Demo_Extends {
        public static void main(String[] args) {
                DemoA a = new DemoA();
                DemoB b = new DemoB();

                a.setName("张三");
                a.setAge(23);
                System.out.println(a.getName() + "..." + a.getAge());
                System.out.println("______________");

                b.setName("李四");
                b.setAge(24);
                System.out.println(b.getName() + "..." + b.getAge());
        }
}

class DemoA {
        private String name;
        private int age ;

        public void setName(String name){
                this.name = name;
        }

        public void setAge(int age){
                this.age = age;
        }

        public String getName(){
                return name;
        }

        public int getAge(){
                return age;
        }
}

class DemoB extends DemoA {
}


6 个回复

倒序浏览
拿b.setName("李四")来给你做个说明:b.setName("李四")这句话是来调用子类setName()方法,但子类中没有setName()方法,可是子类继承了父类,父类中有setName,所以这时候父类的setName方法中就相当于String name ="李四",然后执行父类setName方法中的语句this.name = name,即this.name = "李四",所以父类private String name =李四.
最后通过调用b.getName()方法,就可以在控制台输出李四了.

最后再提醒你一点,调用子类setName方法和并不需要看子类有没有成员变量name,调用setName只要传给子类setName一个String类型的名字就可以,实际这String类型的名字最后是被父类的setName方法接收的,父类接收到名字后就可以赋值给private String name了.
回复 使用道具 举报 2 0
楼上讲的很好
回复 使用道具 举报
首先,调用setName()方法,赋值的是父类中的私有变量,
在调用setName()方法时,方法入栈内存,方法里面有this,代表的是当前类的对象, this.name= name,表示通过this中存储的对象地址值找到了堆内存中的对象,并将值赋值给name
回复 使用道具 举报
子类对象调用set()方法方法的时候,父类会给私有成员变量赋值然后再通过get()方法返回,父类私有成员变量没有被继承只是起到参数传递的作用
回复 使用道具 举报
楼主和层主讲的都很好 受教了
回复 使用道具 举报
三楼很有道理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马