- 1、本文档共89页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
非访问控制接口内部类
* 一个类为什么被定义成final ,最终不可变?出于安全原因,虚方法的调用,动态绑定问题 引用型的变量被定义成final,引用不变,即地址不变,但对象本身可变。 * 此程序很简单的演示了final的常规用法。在这里使用在构造函数中进行初始化的方法,这使你有了一点灵活性。如Bat的两个重载构造函数所示,第一个缺省构造函数会为你提供默认的值,重载的那个构造函数会根据你所提供的值或类型为final变量初始化。然而有时你并不需要这种灵活性,你只需要在定义时便给定其值并永不变化,这时就不要再用这种方法。在main方法中有两行语句注释掉了,如果你去掉注释,程序便无法通过编译,这便是说,不论是i的值或是list的类型,一旦初始化,确实无法再更改。然而b可以通过重新初始化来指定i的值或list的类型,输出结果中显示了这一点:I=100?List?Type:class?java.util.LinkedListI=23?List?Type:class?java.util.ArrayList * 从程序中可以看出,final类与普通类的使用几乎没有差别,只是它失去了被继承的特性。final方法与非final方法的区别也很难从程序行看出,只是记住慎用。 * 上节课画图形的例子 * 子类可以定义抽象方法覆盖父类抽象方法,访问控制可以变大 如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。 * 何时使用一般类,何时使用抽象类 * Java为什么不支持多重继承? * 接口比抽象类更灵活,使用更广泛 * 可以继承多个接口 Public static final 默认的 Public abstract 默认的 * * 对于接口同样有异类收集[] 比较 extands、abstract、interface的异同 * 主要从语法定义和编程的角度论述了abstract class和interface的区别,这些层面的区别是比较低层次的、非本质的。 * 这种方法违反了面向对象设计中的一个核心原则ISP(Interface Segregation Priciple),在Door的定义中把Door概念本身固有的行为方法和另外一个概念报警器的行为方法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为报警器这个概念的改变(比如:修改alarm方法的参数)而改变,反之依然。 * ? 整个过程中接口不负责任何具体操作,其他的程序要连接数据库的话,只需要构造一个DB对象就OK,而不管工厂类如何变化。这就是接口的意义----抽象。 继承的概念不用多说,很好理解。为什么要继承呢?因为你想重用代码?这绝对不是理由,继承的意义也在于抽象,而不是代码重用。如果对象A有一个run()方法,对象B也想有这个方法,所以有人就Class B extends A。这是不经大脑的做法。如果在B中实例化一个A,调用A的Run()方法,是不是可以达到同样的目的?如下: ??? Class B??? {??? A? a=new A();??? a.run();??? }??? 这就是利用类的聚合来重用代码,是委派模式的雏形。 ??? 那么继承的意义何在?其实这是历史原因造成的,最开始的OO语言只有继承,没有接口,所以只能以继承来实现抽象,请一定注意,继承的本意在于抽象,而非代码重用(虽然继承也有这个作用)。什么时候应该使用继承?只在抽象类中使用,其他情况下尽量不使用。抽象类也是不能实例化的,它仅仅提供一个模版而已,这就很能说明问题。 ??? 软件开发的万恶之源,一是重复代码而不是重用代码,二是烂用继承,尤以c++程序员为甚。Java中取缔多重继承,目的就是制止烂用继承,实是非常明智的做法,不过很多人都不理解 * 既然接口比抽象类更灵活,实现的功能都一样,为什么还需要抽象类? * 普通内部类具有成员变量特性 方法中内部类具有局部变量特性 class A{ class B{ class A {} //非法 } } * Class 内部的抽象类的在内部实现 内部Interface 也在类内部进行实现 * 接口的意义 接口和继承是完全不同的东西,接口没有能力代替多重继承,也没有这个义务。接口的作用,一言以蔽之,就是标志类的类别(type of class)。把不同类型的类归于不同的接口,可以更好的管理他们。OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。“
您可能关注的文档
- 需求分析与概念结构设计.ppt
- 雷克萨斯电动天窗系统.ppt
- 雷雨据余晓娟实录制作.ppt
- 需要密码访问的网络共享文件.ppt
- 雷锋精神永放光芒主题班会课件1.ppt
- 露华浓超声波彩光美容仪.ppt
- 震撼的立体城市重庆.pptx
- 雷克萨斯电动车窗系统.ppt
- 雷锋月,学习雷锋精神的,主题班会,最具有层次感,结构感的.ppt
- 零成本营销李宇桐.ppt
- 2022年9月包头市直机关遴选公务员面试真题附解析.docx
- 2022年9月株洲市直机关遴选公务员面试真题带详细解析.docx
- 2023年11月六盘水市直机关遴选公务员面试真题附详解.docx
- 2022年9月垫江县直机关遴选公务员面试真题带详细解析.docx
- 2022年9月大同市直机关遴选公务员面试真题带详解.docx
- 2022年9月黑龙江省直机关遴选公务员面试真题回忆版汇总.docx
- 2022年9月昆明市直遴选面试真题回忆版汇总.docx
- 2022年9月双鸭山市直机关遴选公务员面试真题回忆版.docx
- 2023年11月海口市直机关遴选公务员面试真题带详细解析.docx
- 2022年9月雅安市直机关遴选公务员面试真题带详解.docx
文档评论(0)