Java学习笔记之三《复用类》

Java核心思想学习笔记:chapter7-复用类

java中所有问题的解决都围绕类展开,可以by创建新类实现代码复用。

两种复用方法:

组合:将对象引用置于新类中;

(类中域为基本类型时,自动初始化为默认零值;为对象引用时,自动初始化为null。)

编译器并不是简单的为每一个引用创建默认对象,可在以下位置对引用进行初始化:

1.定义对象时——so,引用总能在构造器被调用之前完成初始化;

2.类的构造器中;

3.使用之前初始化——惰性初始化;

4.使用实例初始化;

继承:按照现有类的类型创建导出类;

(采用现有类的形式,根据需要添加新的功能代码。)

创建类时,总在继承——因为除非明确指出基类,总会隐式调用java标准类Object进行继承;

public class newClass extends baseClass{}

新类自动具有基类的所有域及方法。新类中可添加方法及成员,或对基类方法进行改造。

在新类中调用基类方法:【超类:java中使用super关键字标识】super.func();


一般规则:基类中间成员指定为private;基类方法指定为public。(或protected成员:可借助导出类访问。)对于带参构造器:使用super关键字显式编写调用基类的语句——配以适当参数列表;


继承及初始化:1.加载器启动并寻找到public类的编译代码文件:*.class文件——访问public类中的main()方法【静态方法】;2.if该类为导出类——加载基类(and基类的基类……),类推之;基类中static初始化动作将立即执行,then初始化导出类中的static成员;3.类加载完毕后创建对象:首先设置对象中所有基本类型成员为默认值,对象引用设置为null;其次设置自定义初始化成员。3.最后调用构造器——自动调用基类构造器or使用super指定;

 
 

在组合和继承之间的选择:

组合:通常用于在新类中使用现有类的功能而非接口;has-a(有一个)的关系使用组合表达。

继承:使用某个现有类,并开发一个特殊版本;is-a(是一个)的关系使用继承表达。

组合可以使在运行期间获得动态灵活性,但不能在运行期决定继承不同对象。而继承要求在编译期间完全确定其行为。通用准则:用继承表达行为间差异,用字段表达状态的变化。

此外:代理方式——不需要全部继承,且能实现对现有类的灵活复用。


所谓名称屏蔽java中,如果基类拥有某个多次重载的方法,在导出类重新定义该方法时,不会屏蔽基类方法。关于@Override——添加该注解,可覆盖某个方法,主要用于防止意外重载。


所谓向上转型:

向上转型是指由一个较为专用的类型向较为通用的类型转换;是一种将【对对象的引用】视为【对基类的引用】的做法。如此,一个方法func()定义为接受基类的引用,同时将允许接受该基类的任何导出类的引用。原因在于——导出类是基类的超集,可能包含有比基类更多的方法,But,至少具有基类中的全部方法! 所以,基类的接口必定存在于导出类中。当导出类向上转型到基类,可能缩小接口,但不会比基类全部接口更窄。在向上转型的过程中,类接口唯一可能发生的问题是:丢失方法。这是编译器在“未曾明确表示转型”or“未曾指定特殊标记”情况下,允许向上转型的原因。此处可获得一种是否使用继承的判断方法:

 if(是否使用继承 ==是否需要从新类向基类进行向上转型){继承是必须的;}

else{不需要继承;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值