首页 > 编程语言 > 详细

java基础之基础

时间:2015-09-01 16:55:32      阅读:142      评论:0      收藏:0      [点我收藏+]

1.什么是不能被继承的?

private,static,synchronized,final(可被继承,但不可被覆盖)

2.关于成员变量被private 修饰,就是不能在子类被继承,但是为什么 例如setter/getter 之类和成员变量直接关联的方法依然可以在子类中使用呢?

父类:

public class Person {
    private String name;
    private int age;

    public  String getName() {
        System.out.println("person.name:"+this.name);
        return name;
    }

    public  void setName(String name) {

        this.name = name;
    }

    public int getAge() {
        System.out.println("person.age:"+this.age);
        return age;
    }

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

子类:

public class Predisw extends Person {

}

测试:

public class TestPredisw {

    @Test
    public  void TestAdd(){
        Predisw p=new Predisw();
        p.setAge(11);
        p.setName("wang");
        String name1=p.getName();
        int age1=p.getAge();
        System.out.println(name1+":"+age1);

        
    }
}

person.name:wang
person.age:11
wang:11

变量:

技术分享

 

结论:

在new Predisw();的时候,子类的构造器调用了父类的构造器,所以从本质上来说,是创建了一个新的Person 对象.所以对象p 调用setter 方法是修改了这个对象的name 和age.

 

如果在Predisw 类中添加一个私有变量会如何?

public class Predisw extends Person {
    private String name;

}

运行TestPredisw 时的变量情况如下:

技术分享

多了一个name 的变量.应该是在new Predisw() 的时候调用了super() 和将这个变量添加到新的Predisw 实例中.所以实际上Predisw 有2个name 变量,并没有覆盖掉父类的同名变量.

这个时候如果在Predisw 类中添加name 的setter/getter 会如何?

public class Predisw extends Person {
    private String name;
    
    public String getName() {
        System.out.println("predisw.name:"+this.name);
        return name;
    }

    public void setName(String name) {

        this.name = name;
    }
}

运行TestPredisw 中的方法时,变量情况如下:

技术分享

输出结果如下:

predisw.name:wang
person.age:11
wang:11

 

结论:继承的方法会调用子类的方法,父类的同名方法被覆盖了.子类的方法只能操作到子类的成员变量,而父类的成员变量是私有的,只有通过父类的setter/getter 才能调用.但是父类的setter/getter 被覆盖了,所以父类的name就无法再被修改了.

 

java基础之基础

原文:http://www.cnblogs.com/predisw/p/4776012.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!