A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董将 中级黑马   /  2012-12-18 21:19  /  863 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

private 方法不能重写
public class Test {
        public static void main(String[] args) {
                A a = new B();
                a.fun();//调用不了
        }
}

class A {
        private void fun() {
                System.out.println("A...");
        }
}

class B extends A {
        public void fun() {
                System.out.println("A...");
        }
}

        静态方法不能重写
public class Test {
        public static void main(String[] args) {
                // 这里只有一个实体,而调用结果是两个。
                // 这里没有后期绑定,而是编译器在编译时已经确定下来要调用的方法了。
                // 编译器是通过引用的类型来确定的!
                B b = new B();
                A a = b;
                a.fun();
                b.fun();
        }
}

class A {
        public static void fun() {
                System.out.println("A...");
        }
}

class B extends A {
        public static void fun() {
                System.out.println("B...");
        }
}

        属性不能重写
public class Test {
        public static void main(String[] args) {
                // 子类对象的实体中包含了父类对象的实体空间(父类子对象)
                // 在父类对象中有一个属性a
                // 在子类自己空间也有一个属性a
                // 但这里没有多态!
                // 都是编译器通过引用类型来确定的
                B b = new B();
                A a = b;
                System.out.println(a.a);
                System.out.println(b.a);
        }
}

class A {
        int a = 1;
}

class B extends A {
        int a = 2;
}

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马