目录
继承细节
第一条
子类继承了父类所有的属性和方法,但是私有属性不能在子类直接访问,要通过父类的public方法去访问
父类代码
package com.hspedu.entends_;
public class Base {//父类
//四个属性,四个访问修饰符
public int n1 = 100;
protected int n2 = 200;
int n3 = 300;
private int n4 = 400;
//父类提供一个public方法,用于在子类访问父类中的private属性
public int getN4() {
return n4;
}
//默认的无参构造器
public Base() {
System.out.println("Base()....");
}
//四个方法,访问修饰符对应四个属性
public void test100(){
System.out.println("test100");
}
protected void test200(){
System.out.println("test200");
}
void test300(){
System.out.println("test300");
}
private void test400(){
System.out.println("test400");
}
//父类提供一个public方法,用于在子类访问父类中的private方法
public void callTest400(){
test400();
}
}
子类代码
package com.hspedu.entends_;
public class Sub extends Base{
//子类独有的两个方法
public Sub() {
System.out.println("Sub()....");
}
public void sayOk(){
//除了private属性和方法之外都可以访问
System.out.println("n1=" + n1 + " n2=" + n2 + " n3=" + n3);
test100();
test200();
test300();
//通过父类的public方法访问private属性和方法
System.out.println("n4=" + getN4());
callTest400();
}
}
在子类Sub类中不能直接访问父类Base中的private修饰的属性和方法(n4和方法test400())
解决办法:在父类中创建public方法,然后在子类中调用该方法
eg1:在Base中创建 getN4()
在Sub中调用
eg2:在Base中创建callTest400()
在sub中调用
测试代码
package com.hspedu.entends_;
public class ExtendsDetail {
public static void main(String[] args) {
Sub sub = new Sub();
sub.sayOk();