[原创]java里的变量隐藏、方法覆盖、方法隐藏

永久地址:http://justt0.iteye.com/admin/blogs/new

 

变量:变量只会隐藏不能被覆盖,子类的实例变量/静态变量会隐藏父类同名的实例变量/静态变量,注意“/”这个符号,说明总共有4种隐藏方式。

方法:方法有两种方式,被隐藏/覆盖,同名的静态方法被隐藏,同名的实例方法被覆盖,交叉的形式会报错。

父类:

 

package testjava;

public class Father {
	public String name = "father";

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

 子类:

package testjava;

public class Child extends Father{
	public String name = "child";

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

 测试类:

package testjava;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Child c = new Child();
		System.out.println(c.name);
		System.out.println(c.getName());
		Father f = c;
		System.out.println(f.name);
		System.out.println(f.getName());
	}

}

总结;

1. 可以通过改变父类/子类变量name的类型(实例变量/static变量)测试变量的隐藏效果。

2. 可以通过改变父类/子类getName()方法的类型(如果方法是static的,需要将方法所属类name变量的类型也该为static),然后你就会发现,同名的static方法子类会隐藏父类的方法,而同名的实例方法子类会覆盖父类的方法,交叉形式的重写行为不会被编译器允许。

 

永久地址:http://justt0.iteye.com/admin/blogs/new

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值