谢谢大虾看完,呵呵,我想问:
父类private的成员变量子类构造方法中怎么直接用了?
还有子类第一个构造方法怎么没有引用父类的构造方法啊?class Person {
private String name;
private String 本地;Person(String name) {
this.name = name;
本地 = "beijing";
}
Person(String name, String 本地) {
this.name = name;
this.本地 = 本地;
}
public String info() {
return "name: " + name + " 本地: " + 本地;
}
}class Teacher extends Person {
private String capital;Teacher(String name, String capital) {
this(name, "beijing", capital);

Teacher(String name, String 本地, String capital) {
super(name,本地);
this.capital = capital;
}public String info() {
return super.info() + " capital: " + capital;
}
}public class Test {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Teacher s1 = new Teacher("C","Professor");
Teacher s2 = new Teacher("D","beijing","Professor");System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
}
}
再次感谢~

解决方案 »

  1.   

    1。没看见super吗?
    2。this调用的第二个,杂没用父类的?
      

  2.   

    Teacher(String name, String 本地, String capital) { 
    super(name,本地); 
    this.capital = capital; 

    这个是正确的      子类构造调用父类构造使用super
    Teacher(String name, String capital) { 
    this(name, "beijing", capital); 

    这个是调用本类构造,及上边的那个
      

  3.   


    super调用的不是构造方法么,这样就能用private变量了?
      

  4.   

    super代表父类对象,父类对象当然可以调用他自己的变量
      

  5.   

    可是子类没有name,“本地”这两个变量啊,还不能用父类的,构造方法能给它赋值么,是怎么个情况啊
    呵呵,我有点转不过来
      

  6.   

    super(A,B);
    调用父类构造函数,因此父类的属性就有叻值,有叻值以后呢,info()就能返回值咯。
    Teacher(String name, String capital) {
    this(name, "beijing", capital); //这里调用下面这个子类的构造方法
    }
    Teacher(String name, String 本地, String capital) {
    super(name,本地); //这里调用父类构造方法
    this.capital = capital;
    } public String info() {
    return super.info() + " capital: " + capital;

    这里取的是父类的两个属性和子类本身的属性。
      

  7.   

    楼主看看thinking in java的继承。
      

  8.   


    子类自始至终都没弄到“name”、“本地”这两个变量
    子类构造方法里调用super(name,本地)是给父类里的两个变量赋值
      

  9.   

    this(name, "beijing", capital);调用
    Teacher(String name, String 本地, String capital)这个函数里
    super(name,本地);
    就是父类的构造函数
      

  10.   

    private的字段只能在本类中使用以及继承使用