黑马程序员技术交流社区

标题: 刚学完面向对象,这是我对继承的一点点心得 [打印本页]

作者: 仙儿哥    时间: 2016-1-7 00:23
标题: 刚学完面向对象,这是我对继承的一点点心得
继承是面向对象重要的概念,有代码复用效果,使得开发效率变得很高,在Java语言中,两个类之间通过extends关键字实现继承。这是继承的实例:
class A {
        public A() {
                System.out.println("A()!");
        }
}

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

public class ExtendsTest extends B {

        public ExtendsTest() {
                System.out.println("ExtendsTest()!");
        }

        public static void main(String[] args) {
                new ExtendsTest();
        }

}
ExtendsTest继承自B,B继承自A,当实例化ExtendsTest的时候,却依次打印出了A、B、ExtendsTest构造方法中的内容,构造方法被依次调用了,这是为什么?因为当类实现继承时,默认的会将object类的一个子对象传给子类,而子类需要对这个子对象进行初始化,所以需要调用父类的构造方法,但是,这些我们看不到,不过可以从中得出结论:在对子类进行初始化的时候,会先调用父类的构造方法,如果父类构造方法需要传递参数,则使用super关键字来实现就行了。
class B extends A {
        public B(int n) {
                System.out.println("B()!");
        }
}

public class ExtendsTest extends B {

        public ExtendsTest(int n) {
                super(n);
                System.out.println("ExtendsTest()!");
        }

        public static void main(String[] args) {
                new ExtendsTest(1);
        }

}
下面我们分几种情况讨论下继承:
1、子类不能继承父类私有方法。如果想要继承父类的私有对象。


2、当子类对象调用一个方法时,如果子类没有,则去调用父类的同名方法,但是调用者保持是子类。
public class A {
        int a = 1
作者: 仙儿哥    时间: 2016-1-7 00:24
2、当子类对象调用一个方法时,如果子类没有,则去调用父类的同名方法,但是调用者保持是子类。
public class A {
        int a = 10;
        void a(){
                System.out.println(a);
                System.out.println(getClass().getName());
        }
}

class B extends A {
        int a = 20;
//        void a(){
//                System.out.println(a);
//                System.out.println(getClass().getName());
作者: yifuyue    时间: 2016-1-7 22:57
总结的很好啊!!!
作者: 15000183754    时间: 2016-1-7 23:10
很好 加油!
作者: fengfeng520    时间: 2016-1-7 23:17
总结的很好啊!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2