java默认访问修饰符
我是java的完全初学者,如果这个问题不符合本网站的标准,请原谅我:java默认访问修饰符,java,default,public,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; } 在这里,我试图访问可变的年龄和类名,为它们赋值给person,这恰好是person的超类。但是编译器给出了错误。我甚至尝试将name变量和
class person{
String name;
int age;
}
class teacher extends person{
person s1=new person();
teacher t1=new teacher();
t1.age=56;
}
在这里,我试图访问可变的年龄和类名,为它们赋值给person,这恰好是person的超类。但是编译器给出了错误。我甚至尝试将name变量和age变量公开。但编译器仍在报告错误。我想知道为什么我不能直接访问子类中的超类变量并给它们赋值。不允许在类体中直接编写任意代码。与你所写内容最接近的是
class teacher extends person{
person s1=new person();
teacher t1=new teacher();
{
t1.age=56;
}
}
这称为实例初始值设定项块。实际上,您正在现有类体中对外部类的变量进行赋值,这是不合法的。请在方法或构造函数或匿名块中进行赋值
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;
}
}
做任何适合你和你的程序的事情。一般来说,直接访问变量不是一个好主意。考虑使用下面的代码。 测试驱动程序
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 Teacher extends Person {
public Teacher() {
super();
}
public Teacher(String aName, int anAge) {
super(aName, anAge);
}
}
班级人员
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 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 Teacher extends Person {
public Teacher() {
super();
}
public Teacher(String aName, int anAge) {
super(aName, anAge);
}
}
你有什么错误?您正在使用方法外的代码(
t1.age=56;
)。好的,即使是初学者也应该能够正确地使用空格键…当编译器给出错误时,请始终将其包含在您的问题中。需要知道的一点是,在Java中,类名应该以大写字母开头,而字段,变量名和方法名使用小写字母。这不是编译器强制执行的规则,而是几乎每个Java开发人员都使用的命名约定。