目录
a:在子类的构造方法中,如果没有显示的写super(参数)则默认赠送一个super()(
b:如果显示的写了一个super(参数),如下图所示,则不再赠送
this(参数);//调用本类的其他构造方法(例子中的this("张三",15);)
1.如何实现继承
public class 子类 extends 父类{
子类继承了父类,则可以使用父类中的非private修饰的成员信息
}
package week3;
public class z extends Fu{
public void show() {
System.out.println(super.name);
}
}
class Fu {
public String name;
private int age;
public Fu() {
super();
}
public Fu(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
如果强行使用 private修饰的成员变量就会报错;
2.继承关系下的构造方法的访问特点
a:在子类的构造方法中,如果没有显示的写super(参数),如下图所示,则默认赠送一个super()(就是默认调用父类中无参数的构造方法);
package week3;
public class z extends Fu{
public z() {
}
public void show() {
System.out.println(super.name);
}
}
class Fu {
public String name;
private int age;
public Fu() {
super();
}
public Fu(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
b:如果显示的写了一个super(参数),如下图所示,则不再赠送
c:super(参数),必须是第一个语句
注意事项:
在创建子类对象的时候,一定会调用父类的某个构造方法。
3.this关键字
this关键字的三种用法:
this.本类成员变量(例子中的this.a)
public class z extends F{
public int a;
public z() {
}
public z(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void show() {
System.out.println(super.name+this.a);
}
}
this.本类成员方法(例子中的this.show())
public class z extends F{
public int a;
public z() {
this.show();
}
public z(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void show() {
System.out.println(super.name+this.a);
}
}
this(参数);//调用本类的其他构造方法(例子中的this("张三",15);)
a.必须写在构造方法中
b.必须是第一个语句,this(参数)和super(参数)不能同时存在
c.写了this(参数),之后不再赠送super();
d.构造方法不能递归(你调用我,我调用你);
e.this不写系统不会默认赠送,而super()会赠送
public class z extends F{
public int a;
public z() {
this("张三",15);
}
public z(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void show() {
System.out.println(super.name+this.a);
}
}
以下这种写法均是错误的:
1.this和super同时存在
2.两个构造方法相互调用
public class z extends F{
public int a;
public z() {
this("张三",15);
}
public z(String name, int age) {
this();
super(name, age);
// TODO Auto-generated constructor stub
}
public void show() {
System.out.println(super.name+this.a);
}
}