java继承中的构造方法
2011-03-26 21:25
344 查看
1.子类的构造过程必须首先调用其基类的构造方法。
2.子类可以在自己的构造方法中使用super(argument_list)指定调用基类的构造方法,但必须写在子类方法的第一行。
3.同理可用this(argument_list)调用本类的另外构造方法。
4.如果没有显示的调用基类的构造方法,则系统默认系统默认调用基类无参数的构造方法。
5.如果子类的构造方法中没有显示调用基类的构造方法,基类也没有无参数的构造方法,则编译出错。
6.如果在类的修饰前是public, 则默认构造函数访问权限是 public ,如果 没有显示采用public修饰,则 默认构造函数的访问权限是 friendly。
Code:
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 Student extends Person {
private String school;
Student(String n, String l, String school) {
super(n, l);
this.school = school;
}
Student(String name, String school) {
this(name, "beijing", school);
}
public String info() {
return super.info() + " school: " + school;
}
}
public class Test {
public static void main(String args[]) {
Person p1 = new Person("A");
Person p2 = new Person("B", "shanghai");
System.out.println(p1.info());
System.out.println(p2.info());
Student s1 = new Student("C", "S1");
Student s2 = new Student("C","Shenyang","S2");
System.out.println(s1.info());
System.out.println(s2.info());
}
}
输出结果:
Code:
/*
name: A location: Beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: Shenyang school: S2
*/
2.子类可以在自己的构造方法中使用super(argument_list)指定调用基类的构造方法,但必须写在子类方法的第一行。
3.同理可用this(argument_list)调用本类的另外构造方法。
4.如果没有显示的调用基类的构造方法,则系统默认系统默认调用基类无参数的构造方法。
5.如果子类的构造方法中没有显示调用基类的构造方法,基类也没有无参数的构造方法,则编译出错。
6.如果在类的修饰前是public, 则默认构造函数访问权限是 public ,如果 没有显示采用public修饰,则 默认构造函数的访问权限是 friendly。
Code:
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 Student extends Person {
private String school;
Student(String n, String l, String school) {
super(n, l);
this.school = school;
}
Student(String name, String school) {
this(name, "beijing", school);
}
public String info() {
return super.info() + " school: " + school;
}
}
public class Test {
public static void main(String args[]) {
Person p1 = new Person("A");
Person p2 = new Person("B", "shanghai");
System.out.println(p1.info());
System.out.println(p2.info());
Student s1 = new Student("C", "S1");
Student s2 = new Student("C","Shenyang","S2");
System.out.println(s1.info());
System.out.println(s2.info());
}
}
输出结果:
Code:
/*
name: A location: Beijing
name: B location: shanghai
name: C location: beijing school: S1
name: C location: Shenyang school: S2
*/
相关文章推荐
- Java学习记录(一):Java中继承与静态static、非静态、构造方法等的初始化顺序
- Java之继承中的构造方法
- Java子类继承父类,构造方法的执行顺序问题
- java的练习:继承中的构造方法
- java继承中的构造方法
- java中的继承问题,类B继承A,那么构造方法需要这样写吗?这不是重复吗?还有接口与抽象类怎么实现?
- java构造方法的继承
- 【转载】java继承中的构造方法(super)
- SJCP试题--JAVA继承时候的构造方法笔试面试总结
- java基础:继承中的构造方法规则
- 错误记录--Java中子类继承父类必须调用父类的构造方法?
- Java继承中的构造方法
- java继承中的构造方法
- java中子类继承父类时是否继承构造方法?
- Java继承中的构造方法
- Java中的类继承与构造方法初始化顺序
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨 .
- Java 继承中的构造方法之隐身者“super”
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- java父类子类中静态块非静态块构造方法的执行顺序和继承