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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NeXtyin 中级黑马   /  2016-5-8 22:46  /  343 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


继承是OOP中最为重要的概念,达到了非常有效的代码重用效果,使得开发效率变得很高!同时也因此,造成了OOP语言执行效率低下,不免被C/C++程序员嘲笑。在Java语言中,两个类之间通过extends关键字实现继承。我们来看个继承的实例:
[java] view plain copy
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构造器中的内容,说明:构造器被依次调用了,这是为什么?因为当类实现继承时,默认的会将基类的一个子对象传给子类,而子类需要对这个子对象进行初始化,所以需要调用父类的构造器,但是,这一切都是隐式进行的,我们看不到,不过可以从实验中得出结论:在对子类进行初始化的时候,会先调用父类的构造器(如果有学过C++的同学,肯定知道,在C++中除了有构造函数,还有析构函数,初始化的时候先调用父类的构造函数,析构的时候,先析构子类对象,再析构父类对象,一个从外到里,再由里到外的过程)。如果父类构造器需要传递参数,则使用super关键字来实现就行了。
[java] view plain copy
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 个回复

倒序浏览
很好.很强大!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马