Java 类总结(多态,静态绑定,动态绑定,重写,覆盖,隐藏)

public class DynamicBindAdnStaticBind {


public static void main(String[] cmdLine)
{
BaseClass _baseClass = new SuperClass();
_baseClass.show4();//public
_baseClass.show2();//static 的方法不会被覆盖只会隐藏
// _baseClass.show3();//final 报错不能重写被final修饰的关键字
System.out.println(_baseClass.a);//不会被覆盖,只会调用本身的(隐藏)



/*
 方法不能交叉覆盖:子类实例方法不能覆盖父类的静态方法;

        子类的静态方法也不能覆盖父类的实例方法(编译时报错)

隐藏:父类和子类拥有相同名字的属性或者方法( 方法隐藏只有一种形式,就是父类和子类存在相同的静态方法)时,
父类的同名的属性或者方法形式上不见了,实际是还是存在的。

隐藏是对于静态方法和成员变量(静态变量和实例变量)而言的

重写 = 覆盖 

  3、隐藏和覆盖的区别

     (1)被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性

     在无强制转换时子类要访问父类的属性使用super关键字

 (2)被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法

*覆盖不是说完成把基类的方法给重写,只是一种动态绑定的技术,基类的方法还在还可以使用super关键字调用*
*/
}
}


/*
 * 
 * 当方法是 private static final 时候为静态绑定
 */
class BaseClass
{
final public int a=5;
private void show() {
System.out.println("show function private base");
}
static public void show2() {
System.out.println("show funtion static BASE");
}

final public void show3()
{
System.out.println("show function final Base");
}
protected void show4() {
System.out.println("show function public base");
}
}
class SuperClass extends BaseClass
{
public int a=423;
public void show(){
System.out.println("show function public super");
}
static public void show2(){
System.out.println("show function static super");
}
/* 报错不能重写
final public void show3() {
System.out.println("show function final super");
}
*/
public void show4() {
System.out.println("show function public super");
super.show4();
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值