第七章:复用类

复用代码是Java中众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复杂代码并对之加以改变是不够的,它还要能够做更多的事。
继承和组合是利用现有的类来创建出新的类,提高代码复用。组合模式在设计模式中运用到更多。

1.组合

只需将对象的引用放进新类即可,有点和继承相似。
package com.myboy.refe;
import com.myboy.generic.Test3;
class TestDemo{
	public TestDemo(){
		System.out.println("TestDemo()");
	}
	@Override
	public String toString() {
		return "toString()";
	}
}
public class Test4  {
	  public Test4(){
		  System.out.println("Test4()");
	  }
	  private TestDemo demo=new TestDemo();//无法阻止自动初始化,第六章初始化知识
          /**
	   * private TestDemo demo;--->此时没有自动初始化.
	   */
	  @Override
	public String toString() {		
		return "demo:"+demo;//组合,直接在新类中对引用的类进行调用
	}
      public static void main(String[] args) {
    	  Test4 test=new Test4();
    	  System.out.println(test);
	}
     /**
      * out  :TestDemo()
                Test4()
                toString()
      * 
      */
}

2.继承语法

继承是所有OOP语言和Java语言不可缺少的组成部分。在继承中,父类所拥有能访问的权限的属性,方法都能被子类所看见。创建一个类时,总是在继承(隐式的继承Object类)。
在继承中,对基类子对象的初始化也是至关重要的。构建的过程是从基类" 向外扩展"
package com.myboy.extendstest;
class Test3{
	public Test3(){
		System.out.println("Test3()");
	}
}
class Test2 extends Test3{
	public Test2(){
		System.out.println("Test2()");
	}
}
public class Test1 extends Test2 {
	public Test1(){
		System.out.println("Test1()");
	}
	public static void main(String[] args) {
		Test1 t1=new Test1();
	}
    /**
     * out:Test3();
     *     Test2();
     *     Test1();
     */
}

3.代理(在设计模式中很常见)

第三种关系被称为代理,Java中并没有提供对它的直接支持。继承和组合的 "中庸之道".
因为我们将一个成员对象置于所要构造的类中(就像组合),但是在新类中我们暴露了该成员对象的所有方法(就像继承,但是比继承更厉害--"能直接调用该对象的 私有属性")

4.在论protected关键字

在理想世界里,仅靠关键字private就能实现了。但在实际项目中,经常会想要把某些事物尽可能的隐藏起来,但仍允许导出类(子类)可以使用。
protected 关键字:它指明:就客户而言,它是private的,但是对于其他基于子类的导出类和其他位于同一个包的类,他却是可以访问的。(protected提供了包级访问权限)。

5.向上转型

"为新的类方法"并不是继承技术中最重要的方面,其最重要的方面是表现新类(导出类)和基类之间的关系。这种关系是" 导出类是基类的一种类型"

我真的需要向上转型吗????????(如何选择继承和组合)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值