java关键字super和this之间的区别

super和this之间的区别:
this:当前对象(new的对象|调用成员方法的对象)
1.调用本类中的其他构造器
this(参数列表)
2.区分局部和成员之间的问题
super:指代父类对象
1.调用父类的构造器
super()
如果没有显示定义,调用父类的哪一个构造器,默认首行调用super()父类空构造
因为一般子类构造器的首行会默认调用父类空构造的问题,所以建议模板类都至少存在一个空构造
super()必须在首行调用使用才行
2.区分子父类同名问题
如果当子父类中存在同名成员的时候,子类中使用同名内容默认就近原则指代父类,如果先要使用父类的通过super使用
super指代父类对象
如果不存在同名问题,调用父类中的成员,super.可以省略
先父类后子类
先静态后成员
final 关键字
被final修饰的变量为常量
被final修饰的方法不能被重写
被final修饰的类不能被继承 (太监类)

public class SuperDemo01 {
	//成员变量 引用数据类型 存储对象类型的数据
	static final Zi z=new Zi();
	public static void main(String[] args) {
		Zi zi=new Zi();
		System.out.println(zi.a);
		zi.test();
		
		System.out.println(zi);
		
		//z=new Zi(); 对象的内存地址不可以改变,但是其成员的值可以修改
		z.s="hehe";
		System.out.println(z.s);
	}
}

class Fu{
	int a=5;
	int b=10;
	/*public Fu() {
		System.out.println("我是父类空构造");
	}*/
	public Fu(int a) {
		System.out.println("我是父类带参构造");
		this.a=a;
	}
	
}

class Zi extends Fu{
	int  a=1;
	String s="哈哈";
	public Zi() {
		//super();
		this("1");
		System.out.println("我是子类空构造");
	}
	
	public Zi(String s){
		super(500);
	}
	
	//测试字父类同名问题
	void test(){
		System.out.println(a);  //默认就近原则
		System.out.println(new Fu(1).a);
		System.out.println(super.a);
		
		System.out.println(this);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值