A a = new A();
这句话为A的对象创建了一个实例,在内存里开辟了两个空间:一块空间在堆,存放new A()这个对象;另一块空间在栈,存放a,a的值即new A()这个对象的内存地址。
Object o;
声明了一个引用,存放在栈中,类型是Object,值为null,没有指向任何一个对象。
下面的例子中Dog是Animal的子类,main方法中各个对象能且仅能调用给出的方法
public class Animal {
public void animalMethod() {
System.out.println("animalMethod");
}
public void whoami() {
System.out.println("just a animal");
}
}
public class Dog extends Animal {
public void dogMethod() {
System.out.println("dogMethod");
}
public void whoami() {
System.out.println("i am a dog");
}
}
public class Main {
public static void main(String[] args) {
System.out.println("-----------------------");
Animal t1 = new Animal();
t1.whoami();
t1.animalMethod();
System.out.println("-----------------------");
Dog t2 = new Dog();
t2.whoami();
t2.animalMethod();
t2.dogMethod();
System.out.println("-----------------------");
Animal t3 = new Dog();
t3.whoami();
t3.animalMethod();
System.out.println("-----------------------");
}
}
输出结果如下:
-----------------------
just a animal
animalMethod
-----------------------
i am a dog
animalMethod
dogMethod
-----------------------
i am a dog
animalMethod
-----------------------