java中什么是成员方法重载_Java中成员变量的隐藏、成员方法的覆盖和重载

一、成员变量:

Java中对于子类中定义与夫类具有相同的签名的变量 是采取隐藏的方式,而不是覆盖。

测试代码如下:

public class A extends B{

static int static_ = 4;

int nonStatic = 5;

}

class B {

static int static_ = 3;

int nonStatic = 4;

}

public class Main {

public static void main(String[] args) {

//非静态测试

A a = new A();

B b = new B();

B a1 = (B)a;

System.out.println(a.nonStatic);

System.out.println(b.nonStatic);

System.out.println(a1.nonStatic);

}

}

Print Res:

5

4

4

1.对于非静态成员变量:

a. 我们可以看出,子类只是隐藏了父类的成员变量,当我们通过夫类的类型引用访问该变量时,就会访问到定义在夫类中的该成员变量。

b.我们也可以在子类中通过super关键字对父类中的变量进行操作。

这里比较值得注意的就是:我们应该尽量避免无效的隐藏,因为隐藏变量是会占用内空间的。 探究这些问题,主要就是为了我们编写更高效的程序。当我们在编程时应该知道我们为什么这么做,也要明白为什么不那么做,避免编程的随意性。编程语言为我们提供了开发的基础,但却并未向我们保证能开发出高质量的软件,这需要我们基于自己对编程语言的理解以及他人的见解来思考如何编写高质量的程序。

2.对于静态成员变量:静态变量是与类绑定的,我们一般都是通过类来访问 静态成员变量 , 所以它又叫类变量。 对于静态成员变量也是遵循隐藏机制的。

二、成员方法:

a. 成员方法的覆盖,要满足:

1.两同 : 方法名和参数列表相同

2.两小: 返回类型和抛出错误类型小于父类

3.一大: 访问权限大于父类

此外还要保证方法签名的一致。 方法签名包括方法名和参数列表,其中参数列表包括参数类型、顺序、个数。

其实,这些都是Java语言定义好的覆盖必须要遵循的规则。那么Java语言为什么要这么规定呢?作为面向对象语言,肯定要符合面向对象的五大原则 SOLID,这里的就体现了 其中的 里氏替换原则(L)。

b.成员方法的重载:

当我们进行方法重载时:

1.要更改成员变量列表

2.可以更改方法权限、可以更改方法返回值,可以更改错误抛出类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值