继承关系下构造方法的访问特点

目录

1.如何实现继承

2.继承关系下的构造方法的访问特点 

 a:在子类的构造方法中,如果没有显示的写super(参数)则默认赠送一个super()(

b:如果显示的写了一个super(参数),如下图所示,则不再赠送

c:super(参数),必须是第一个语句 

注意事项:

3.this关键字

        this.本类成员变量(例子中的this.a)

        this.本类成员方法(例子中的this.show())

        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);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值