Java中子类是否能够继承父类的private方法

本文解析了子类继承父类的特性,强调子类能访问但不能修改父类的私有属性和方法。重点讲解了覆盖父类方法的规则,如参数类型和返回类型,并介绍了如何在构造子类时继承私有域。通过实例演示了私有方法和属性的访问方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。
所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。

当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量

  • (1)子类覆盖父类的方法,必须有同样的参数返回类型,否则编译不能通过

  • (2)子类覆盖父类的方法,在jdk1.5后,参数返回类可以是父类方法返回类的子类

  • (3)子类覆盖父类方法,可以修改方法作用域修饰符,但只能把方法的作用域放大,而不能把public修改为private

  • ( 4 )子类方法能够访问父类的protected作用域成员,不能够访问默认的作用域成员,除非子类与父类同包

  • (5)子类的静态方法不能隐藏同名的父类实例方法

子类不能直接访问父类的私有属性,子类只能在父类中写一个public的getXXX的方法来获取父类中的private属性,子类就调用父类的getXXX来获取private属性

父类中的公有方法和域(属性),在类继承中将会被子类继承,但是私有的将不能被继承。

那么在继承中子类如何才能继承到父类的私有域呢?

答案是:在子类的构造方法中通过super()方法调用父类的构造方法。

也就是,在构造子类的同时,为子类构造出跟父类相同的域。如此就在子类的对象中,也拥有了父类声明的域了。

并且我们也应该这样做:

public class Person{
 
private String name;
 
 
public Person(String name){
 
  this.name = name;
 
}
 
 
public void setName(String name){
 
  this.name = name;
 
}
 
 
public String getName(){
 
   return name;
 
 }
 
}
public class Student extends Person{
 
  public Student(String name){
 
     super(name);
 
  }
 
}
 Test:

public class TestStudent{
 
 public static void main(String[] args){
 
 Student mStudent = new Student("abc");
 
 String mName = mStudent.getName();
 
 System.out.println("Name is : " + mName);
 
 
 mStudent.setName("efg");
 
 mName = mStudent.getName();
 
 System.out.println("Name is : " + mName);
 
 }
 
}
打印结果为:

Name is : abc

Name is efg
 做面试题的时候见到private用法了,说是子类无法继承父类的private方
 法,但是我记得是子类可以继承,但是无法调用,去网上找了些资料,这个
 博主写的比较详细,转载一下。
   原博客地址: https://blog.csdn.net/shadow_zed/article/details/82182087
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值