1.组合(composition):将某现有类的对象的引用置于新类之中,作为新类的成员。成员间是"has-a"的关系。这样做的好处是可以利用自己或别人已调试好的代码,提高编程效率。
2.继承(inheritance):java中所有类都默认继承Object类。在新类后用extends关键字后跟继承的基类的方式实现。(继承的类称为子类)子类初始化前先对父类进行初始化。基类构造器为有参构造器时,需使用super关键字显示调用基类构造器并配以适当的参数列表。另外,如果在基类中有有参构造器而没有显示编写无参构造器,在子类中编写无参构造器且没有使用super显示调用基类构造器,则会产生异常。在访问权限足够的情况下(子类不能访问父类private权限的方法或成员),子类中可以使用super关键字调用从基类继承来的的方法,子类重写父类方法时,方法的参数和修饰词都应相同,当然子类也可以有自己的方法。、
继承的优点之一是它支持增量开发,允许你引入新代码而不会在现有代码中引发Bug。继承描述了新类与基类之间的关系,即”新类是基类的一种类型“,这意味着基类中所有的方法在导出类中同样有效,导出类对象也是一种类型的基类对象(”即向上转型“)。一般在需要用到向上转型时才使用继承这一技术。
子类:
基类:public class Test01 extends Test1{ Test01(){ System.out.println("hello01"); } protected void m1(){ super.m1(); } public static void main(String[] Args){ Test01 t = new Test01(); t.m1(); } }
public class Test1 { Test1(){ this("lei"); System.out.println("hello"); } Test1(String s){ System.out.println("hello"+s); } // protected void m1(){ System.out.println("method1"); m2(); this.m2(); } void m2(){ System.out.println("method2"); } void m3(){ System.out.println("i:"+i+"; "+"s:"+s); } }