用法:
***用来操作被子类隐藏的成员变量和方法***
子类隐藏的成员变量:
1.
**如果子类和父类在同一个包中,**
**那么,子类自然的继承了其父类中不是private的成员变量和方法。**
**继承的成员变量或方法的访问权限保持不变。**
**但是用private修饰的成员变量和方法,子类将会隐藏起来。**
public abstract class Car {
private String color;
private String brand;
private String carid;
Car (String c,String b,String id){
color = c;
this.brand = b;
carid = id;
}
public abstract void drive();
public abstract void energy();
}
package com.czu;
public abstract class NewEnergyCar extends Car{
NewEnergyCar(String c, String b, String id) {
super(c, b, id);
}
private String mileage;
public void drive(){
System.out.println("drive by electricity");
}
public void energy(){
System.out.println("relenish electricity");
}
}
2.
**子类的成员变量名与父类的成员变量名相同,父类的变量将会被隐藏**
```
class sum {
int n;//父类成员变量
float f() { //父类的成员方法
float sum = 0;
for(int i = 1;i<=n;i++)
sum = sum + i;
return sum;
}
}
class Average extends sum{
int n;//子类成员变量与父类同名
float f(){//与父类方法同名的子类方法
float c;
super.n = n;//用子类变量给父类变量赋值
c = super.f();//调用父类方法
return c/n;
}
float g(){
float c;
c =super.f();//调用父类方法
return c/2;
}
}
public class Example {
public static void main(String[] args) {
Average aver =new Average();
aver.n = 100; //给子类变量赋值
float resultOne = aver.f();//调用子类方法
float resultTwo = aver.g();//调用子类方法
System.out.println(resultOne);
System.out.println(resultTwo);
}
}