Java继承关于父类成员方法的覆盖问题,成员变量?

对于继承中子类中的成员方法能够覆盖掉父类的成员方法
对于成员变量,是不能覆盖的,在一个新的类里面定义一个成员变量与父类中的成员变量相同名称的时候并不会将父类的成员变量覆盖,而是将这个成员变量看作是这个新的类定义的新的成员变量

package jiCheng_duoTai;

public class FUGai {
  public static void main(String[] args) {
   A aa = new B();//将父类的引用指向B,将开辟的B地址赋给aa;//创建一个子类对象的时候在内存上同时创建一个父类的对象
   aa.cry();//子类成员方法会覆盖父类的成员方法
   System.out.println(aa.a);//结果为10,说明 成员变量不会被覆盖
  }
}
class A{//创建一个父类
 int a=10;//成员变量
 public A() { System.out.println("父类构造方法"); }
 public void cry() { System.out.println("父类cry成员方法"); }//成员方法
}
class B extends A{
 int a=19;
 public B() { System.out.println("子类的构造方法"); }
 public void cry() { System.out.println("子类的cry成员方法"); }
}

在这里插入图片描述

补充说明:

你也许会对A aa = new B();这个语句调用构造方法还有疑问,接下来我来解决一个疑问:

先看下面一段代码:

public class FUGai {
  public static void main(String[] args) {
   A aa = new B(3);
   aa.cry();
   System.out.println(aa.a);
  }
}
class A{//创建一个父类
 int a=10;//成员变量
 public A() { System.out.println("父类构造方法"); }
 public A(int a) {
	 this.a = a;
	 System.out.println("2133333333321321312");
 }
 public void cry() { System.out.println("父类cry成员方法"); }
}
class B extends A{
 int a=19;
 public B() { System.out.println("子类的构造方法"); }
 public B(int a) {
	 this.a = a;
	 System.out.println("sadsadsadasdsadasda");
 }
 public void cry() { System.out.println("子类的cry成员方法"); }
}

运行结果:
在这里插入图片描述

刚刚不还是调用了子类的无参构造方法吗,现在咋不调用了,但是父类的无参构造方法仍然被调用,这是为什么呢?

因为:
在这里插入图片描述
我们调用的是B这个类中的有参数的构造方法,所以会去调用子类B中的有参的构造方法,A是父类,但只会调用父类本身的无参的构造方法。所以你记住了吗?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值