现在学到这个位置,有些问题自己想不清楚,麻烦哪位高手指点一下,谢谢了!马士兵老师的视频讲的这段代码时,还很明白。代码如下:
class SuperClass {
private int n;
SuperClass() {
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}可是后来又讲了一段代码,我就有些不懂了,代码如下:
class Person {
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
}class Teacher extends Person {
private String capital;
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
Teacher(String n, String l, String capital) {
super(n, l);
this.capital = capital;
}
public String info() {
return super.info() + "capital " + capital;
}
}class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
}public class TestTeacher {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
}
这个也是继承构造类吧?可是,为什么不在继承构造的方法里面加上“super” 关键字了呢?
class SuperClass {
private int n;
SuperClass() {
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(" + n + ")");
this.n = n;
}
}class SubClass extends SuperClass {
private int n;
SubClass(int n) {
super();
System.out.println("SubClass(" + n + ")");
this.n = n;
}
SubClass() {
super(300);
System.out.println("SubClass()");
}
}public class TestSuperSub {
public static void main(String arg[]) {
//SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}可是后来又讲了一段代码,我就有些不懂了,代码如下:
class Person {
private String name;
private String location; Person(String name) {
this.name = name;
location = "beijing";
}
Person(String name,String location) {
this.name = name;
this.location = location;
}
public String info() {
return
"name: "+name+
" location: "+location;
}
}class Teacher extends Person {
private String capital;
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
Teacher(String n, String l, String capital) {
super(n, l);
this.capital = capital;
}
public String info() {
return super.info() + "capital " + capital;
}
}class Student extends Person {
private String school;
Student(String name,
String school) {
this(name,"beijing", school);
}
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}
public String info() {
return super.info()+
" school: "+school;
}
}public class TestTeacher {
public static void main(String[] args) {
Person p1 = new Person("A");
Person p2 = new Person("B","shanghai");
Student s1 = new Student("C","S1");
Student s2 =
new Student("C","shanhai","S2");
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
Teacher t1 = new Teacher("D", "Professor");
System.out.println(t1.info());
}
}
这个也是继承构造类吧?可是,为什么不在继承构造的方法里面加上“super” 关键字了呢?
要不要调用super()完全可以由自己决定。
但最好是要调用super(),这样才符合面向对象的规范
Teacher(String name, String capital) {
this(name, "beijing", capital);
}
这个是因为调用了自己的另一个有三个参数的构造函数
而这个函数里调用了super()
Teacher(String name, String capital) {
this(name, "beijing", capital);
} 不太理解,什么意思呢?
Student(String name,
String school) {
this(name,"beijing", school);
}
而在被调用的构造函数中使用了super
Student(String n,String l
,String school) {
super(n,l);
this.school = school;
}