两种代码重用机制——组合与继承

转载源

1.组合(composition):将某现有类的对象的引用置于新类之中,作为新类的成员。成员间是”has-a”的关系。这样做的好处是可以利用自己或别人已调试好的代码,提高编程效率。

2.继承(inheritance):java中所有类都默认继承Object类。在新类后用extends关键字后跟继承的基类的方式实现。(继承的类称为子类)子类初始化前先对父类进行初始化。基类构造器为有参构造器时,需使用super关键字显示调用基类构造器并配以适当的参数列表。另外,如果在基类中有有参构造器而没有显示编写无参构造器,在子类中编写无参构造器且没有使用super显示调用基类构造器,则会产生异常。在访问权限足够的情况下(子类不能访问父类private权限的方法或成员),子类中可以使用super关键字调用从基类继承来的的方法,子类重写父类方法时,方法的参数和修饰词都应相同,当然子类也可以有自己的方法。、

继承的优点之一是它支持增量开发,允许你引入新代码而不会在现有代码中引发Bug。继承描述了新类与基类之间的关系,即”新类是基类的一种类型“,这意味着基类中所有的方法在导出类中同样有效,导出类对象也是一种类型的基类对象(”即向上转型“)。一般在需要用到向上转型时才使用继承这一技术。

子类:


    
    
  1. public class Test01 extends Test1{
  2. Test01(){
  3. System.out.println( “hello01”);
  4. }
  5. protected void m1(){
  6. super.m1();
  7. }
  8. public static void main(String[] Args){
  9. Test01 t = new Test01();
  10. t.m1();
  11. }
  12. }
基类:

    
    
  1. public class Test1 {
  2. Test1(){
  3. this( "lei");
  4. System.out.println( "hello");
  5. }
  6. Test1(String s){
  7. System.out.println( "hello"+s);
  8. }
  9. //
  10. protected void m1(){
  11. System.out.println( "method1");
  12. m2();
  13. this.m2();
  14. }
  15. void m2(){
  16. System.out.println( "method2");
  17. }
  18. void m3(){
  19. System.out.println( "i:"+i+ "; "+ "s:"+s);
  20. }
  21. }

猜你喜欢

转载自blog.csdn.net/ananbei/article/details/81182790