1、成员变量的隐藏
在编写子类时,我们仍然可以声明成员变量,一种特殊的情况是,如果所声明的成员变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类就会隐藏掉所继承的成员变量,即子类重新声明定义了这个成员变量。需要注意的是,子类对象仍然可以调用从父类继承的方法操作隐藏的成员变量。
2、方法重写
子类通过重写可以隐藏已继承的实例方法。
1).重写的语法规则
如果子类可以继承父类的某个实例方法,那么子类就有权利重写这个方法。
方法重写是指:子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。
2).重写的目的
子类通过方法的重写可以隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。
3).JDK 1.5对重写的改进
在JDK 1.5版本之后,允许重写方法的类型可以是父类方法的类型的子类型,即不必完全一致.也就是说,如果父类的方法的类型是“类”,重写方法的类型可以是“子类”。
4).重写的注意事项
重写父类的方法时,不可以降低方法的访问权限。
3、super关键字
在子类中想使用被子类隐藏的成员变量或方法就可以使用关键字super。
比如super.x、super.play()就是访问和调用被子类隐藏的成员变量x和方法play()。
4、示例代码
Demo22.java
package com.blue.main;
public class Demo22 {
public static void main(String[] args) {
// Person person = new Person();
// person.speak();
Man man = new Man();
man.test();
}
}
Man.java
package com.blue.main;
public class Man extends Person{
int age = 8;
public void test(){
System.out.println("person age:"+super.age);
super.speak();
}
@Override
public void speak() {
System.out.println("hello man");
}
}
Person .java
package com.blue.main;
public class Person {
int age = 10;
float height;
double weight;
public void speak(){
System.out.println("hello person");
}
}