复用、多态、接口和内部类

本篇博文主要是阅读编程思想后的笔记。
复用类

复用代码是java众多引人注目的功能之一。但是想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的。它必须能够做更多的事情。

复用类的实现方式主要有两种:组合、继承。
组合是指通过创建已有对象的引用的方式实现代码复用。相对于组合显示的复用类来说,其继承则是隐式的复用代码。当创建一个类时,总是在继承,因此,除非已经明确指出要从其他类中继承,否则就是在隐式的从java的标准根类Object进行继承。
ps1:java继承标准根的目的是为了方便extends和implement的实现。
ps2:
1、在对象初始化的过程中,其总是先初始化基类。当基类构造器具有参数时,需要显示的使用super。
2、在面向对象的思想中,我们通常把不同的对象归纳为类,在此基础上将其相同的属性和方法抽象出来,称之为抽象类或者基类。而拥有不同性质的类称之实体类、子类或者导出类。将实体类或子类到抽象类或基类的过程称之为“抽象”,反之称之为“继承”。
【代理】:
代理时继承和组合的中庸之道,或者说是组合的应用。

多态
多态又被称之为动态绑定或者后期绑定,其有别于前期绑定(static,final 等,private 也是final类型的,但其初始化是在创建对象时)。因为在类初始化的过程中,其步骤如下所示:
1、在堆内存中分配一个存储空间并初始化为二进制的零。
2、调用基类的构造器,这个步骤回不断的反复递归下去,首先是构造这种层次结构的根,然后是下一层的导出类,等等。直到最底层的导出类。
3、按声明的顺序调用成员的初始化方法。
4、调用导出类构造器的主体。

接口
为了实现多继承而提出的一种方法,使用继承(至少有一个抽象方法的类,java用abstract修饰)和若干个接口(完全由抽象方法组成,并用interface修饰)组合的方式解决“多继承”的相关问题。
bug:多继承是一件很复杂、很容易产生问题的功能。它和goto语句一样,利弊交织。比方说:A、B父类中拥有相同的public 方法;在继承树上,存在交叉等。
为了解决以上问题,java采用了单继承 + 多接口的方式来对应上述问题。

1、接口可以继承于多个接口:由于其没有具体实现方法。

内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。其本质是为了闭包。

可以在一个方法里面或者在任意的作用域内定义内部类。主要有两个理由:
1)可以实现某类型的接口,于是可以创建并返回对其的引用。
2)你要解决一个复杂的问题,想创建一个类类辅助你的解决方案,但是又不希望这个类是公共可用的。

【匿名内部类】:即是指没有对象名称,通常他会隐式的保存一个引用,指向创建它的外围类对象。
【嵌套类】:如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类申明为static。这通常称为嵌套类。其将有意味着:
1、要创建嵌套类的对象,并不需要其外围类的对象。
2、不能从嵌套类的对象中访问非静态的外围类对象。
嵌套类可以放置在接口中,应为类是static的,只是讲嵌套类置于接口的命名空间中,并不违反接口的规则。你升职可以在内部类中实现外围接口。
在实际工作中,如果想创建公共代码,使得他们可以被某个接口的所有不同实现所共用,那么使用接口内部的嵌套类会显得很方便!
例子:可以将类继承某个接口Interface,并在Interface中使用嵌套类来方式测试代码!

【为什么需要内部类】:内部类和外围类都可以实现某个接口,在取舍方面遵循“如果满足需求,那么就应该这样做”。那么内部类与外部类实现接口的区别主要是:后者不是总能享用到接口带来的便利,有时候需要用到接口的实现。所以,使用内部类最吸引人的原因是:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都是没有影响的。
ps:如果没有内部类提供的、可以继承多个具体的或抽象的类的能力,一些设计与编程问题就难以解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类则有效的实现了“多继承”。

【局部内部类和匿名内部类的区别】:
局部内部类具有已命名的构造器,而匿名内部类没有。这就导致了,匿名内部类只能初始化操作,不能重载构造器。当我们需要不止一个内部类对象时,则必须使用局部内部类。

继承、多态、封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值