java默认访问修饰符

时间:2014-09-06 16:59:51

标签: java default public

我是java的初学者,所以如果这个问题不符合本网站的标准,请原谅我:

class person{
    String name;
    int age;
}
class teacher extends person{
  person s1=new person();
  teacher t1=new teacher();
  t1.age=56;
}

这里我试图访问变量age和class的名称,为它们分配值person,这恰好是person的超类。但是编译器给出了错误。我甚至尝试将名称变量和年龄变量设为公共变量。但编译器仍然报告错误。我想知道为什么我不能直接访问子类中的超类变量并为它们赋值。

3 个答案:

答案 0 :(得分:2)

您不能直接在类体内编写任意代码。与你所写的最接近的是

class teacher extends person{
  person s1=new person();
  teacher t1=new teacher();
  {
    t1.age=56;
  }
}

这称为实例初始化程序块。

答案 1 :(得分:1)

通常,直接访问变量不是一个好主意。考虑使用类似下面的代码。

测试驱动程序

package com.example.input;

public class TestPeople {

        public static void main(String[] args) {

            Person s1 = new Person();
            s1.setName("student 1").setAge(19);
            Teacher t1 = new Teacher("Dr. Fun",0);
            t1.setAge(56);

            System.out.println("Student " + s1.getName() + ", " + s1.getAge());
            System.out.println("Teacher  " + t1.getName() + ", " + t1.getAge());
        }

    }

班级人员

package com.example.input;

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

    public Person() {};
    public Person(String aName, int anAge) {
        setName(aName).setAge(anAge);
    }

    public String getName() {return name;}
    public int getAge() {return age;}

    public Person setName(String aName) { name = aName; return this;}
    public Person setAge(int anAge) { age = anAge; return this;}

}

班主任

package com.example.input;

public class Teacher extends Person {

    public Teacher() {
        super();
    }
    public Teacher(String aName, int anAge) {
        super(aName, anAge);
    }

}

答案 2 :(得分:0)

实际上,你正在现有的类体中对外部类的变量进行赋值,这是不合法的。在方法或构造函数或匿名块中进行赋值。

class person{
    String name;
    int age;
}
class teacher extends person{
    person s1=new person();
    teacher t1=new teacher();
    // t1.age=56; Error here
    public teacher()
    {
         t1.age=56;
    }
    //or method
    public void setAge()
    {
         t1.age=56;
    }
}

做任何适合你的计划和你的事。