从子类初始化私有变量
Initialize private variables from subclass
我即将参加考试,其中一项练习任务如下:
我在这个任务中遇到的问题是两个私有变量 name 和 course。
私有意味着它们不能被子类覆盖,对吧?
我应该如何从子类中初始化这些变量?
到目前为止,这是我的代码,但它不起作用:
class Bachelor extends Student{
Bachelor (String n, String c){
name = n;
course = c;
}
void printlabel() {
System.out.println("%s\nBachelor %s",name, course);
}
}
class Master extends Student{
Master (String n, String c){
name = n;
course = c;
}
void printlabel() {
System.out.println("%s\nMaster %s",name, course);
}
}
public abstract class Student {
private String name;
private String course;
public Student (String n, String c) {
name = n;
course = c;
}
void printname() {
System.out.println(name);
}
void printcourse() {
System.out.println(course);
}
public static void main(String[] args) {
Bachelor rolf = new Bachelor("Rolf", "Informatics");
rolf.printname();
}
abstract void printlabel();
}
详细说明:
使用两个私有对象变量 name
和 course
创建 class Student
。
然后创建一个构造函数来初始化这些变量、方法 printname()
和 printcourse()
以及抽象方法 printlabel()
.
然后创建两个子类Bachelor
和Master
。他们应该有一个构造函数并覆盖抽象方法。
例如
Bachelor b = new Bachelor("James Bond", "Informatics");
b.printlabel();
应该return姓名、班级名称和课程。
您可以使用 a call to super()
访问超类构造函数。所以在你的子类中,只需调用 super(n, c);
而不是直接分配变量,你应该得到预期的行为。
添加一个设置私有属性的公共方法。从构造函数调用所述 public 方法。
我即将参加考试,其中一项练习任务如下:
我在这个任务中遇到的问题是两个私有变量 name 和 course。 私有意味着它们不能被子类覆盖,对吧? 我应该如何从子类中初始化这些变量?
到目前为止,这是我的代码,但它不起作用:
class Bachelor extends Student{
Bachelor (String n, String c){
name = n;
course = c;
}
void printlabel() {
System.out.println("%s\nBachelor %s",name, course);
}
}
class Master extends Student{
Master (String n, String c){
name = n;
course = c;
}
void printlabel() {
System.out.println("%s\nMaster %s",name, course);
}
}
public abstract class Student {
private String name;
private String course;
public Student (String n, String c) {
name = n;
course = c;
}
void printname() {
System.out.println(name);
}
void printcourse() {
System.out.println(course);
}
public static void main(String[] args) {
Bachelor rolf = new Bachelor("Rolf", "Informatics");
rolf.printname();
}
abstract void printlabel();
}
详细说明:
使用两个私有对象变量 name
和 course
创建 class Student
。
然后创建一个构造函数来初始化这些变量、方法 printname()
和 printcourse()
以及抽象方法 printlabel()
.
然后创建两个子类Bachelor
和Master
。他们应该有一个构造函数并覆盖抽象方法。
例如
Bachelor b = new Bachelor("James Bond", "Informatics");
b.printlabel();
应该return姓名、班级名称和课程。
您可以使用 a call to super()
访问超类构造函数。所以在你的子类中,只需调用 super(n, c);
而不是直接分配变量,你应该得到预期的行为。
添加一个设置私有属性的公共方法。从构造函数调用所述 public 方法。