`

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

    博客分类:
  • 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

1
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics