- public class ExtendsTest {
- public static void main(String[] args)
- {
- Animal animal = new Dog();
- //这里 animal 不能 访问Dog里面的属性和方法
- //我想知道是 在 new Dog() 的时候, 底层是怎么运行的,
- //Dog()的属性是没有分配内存空间,还是分配了不允许调用!!
-
- Dog dog = (Dog) animal;
- //如果没有分配内存空间,为何将animal 强转后可以访问到 dog 的属性,并且已经赋值了;
- //难道 强转是 重新new的一个对象?????
- //如果把Dog修改成单例模式,animal 和 dog 在内存中 应该就是一个对象吧!
- //
- //说了这么多,大家应该明白我疑惑的地方了吧~ ~~ 秋香姐!!!!
- //
- System.out.println(dog.arg1);
-
- // Animal animal = Dog.getDog();
- // Dog dog = (Dog) animal;
- // System.out.println(animal==dog);
- // System.out.println(dog.arg1);
- }
-
- }
- class Animal{
- }
- class Dog extends Animal{
- String arg1="arg1";
- String arg2="arg2";
- // private static Dog dog = new Dog();
- // private Dog()
- // {
- //
- // }
- //
- // public static Dog getDog()
- // {
- // return dog;
- //
- // }
-
- }
复制代码 |
|