. 继承条件下的构造方法调用(TestInherits.java)
java
class GrandParent {
public GrandParent() {
System.out.println("GrandParent");
}
public GrandParent(String name) {
System.out.println("GrandParent:" + name);
}
}
class Parent extends GrandParent {
public Parent() {
// 隐式调用super()
System.out.println("Parent");
}
public Parent(String name) {
super(name); // 必须是第一句
System.out.println("Parent:" + name);
}
}
class Child extends Parent {
public Child() {
System.out.println("Child");
}
}
public class TestInherits {
public static void main(String[] args) {
System.out.println("---创建Child对象---");
new Child();
System.out.println("---创建Parent对象(带参数)---");new Parent("Test");
}
}
2. 方法覆盖中super关键字的使用
java
class Animal {
public void eat() {
System.out.println("动物吃东西");
}
}
class Dog extends Animal {
@Override
public void eat() {
super.eat(); // 调用父类被覆盖的方法
System.out.println("狗啃骨头");
}
}
public class TestSuper {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
}
}
3. instanceof运算符验证
java
public class TestInstanceof {
public static void main(String[] args) {
Object obj = "Hello";
if (obj instanceof String) {
System.out.println("obj可以被转换为String");
String str = (String)obj;
System.out.println(str);
}
}
}
4. 多态中的字段隐藏
java
class Parent {
public String value = "Parent";
}
class Child extends Parent {
public String value = "Child"; // 隐藏父类字段
}
public class TestFieldHide {
public static void main(String[] args) {
Child child = new Child();
Parent parent = child;
System.out.println("child.value = " + child.value); // ChildSystem.out.println("parent.value = " + parent.value); // Parent
}
}
