666666

666666 关注TA

666666

666666

关注TA

  •  未知地区
  • 未知工作
  • 写了71,717字

该文章投稿至Nemo社区   Java  板块 复制链接


对象的比较,多态,抽象类 ,final关键字

发布于 2016/04/06 14:54 877浏览 0回复 1,169

对象的比较


在我们使用运算符“==”来比较两个对象时,其实比较的是两个对象的地址。如

果运算符两边是同一个对象,地址相同则会等到true,只要是不同对象地址就会

不同,返回false。

我们在编程过程中经常会比较两个对象的属性,这时我们就无法用“==”来比较

了,因为即使两个对象所有属性都相同但不是同一个对象“==”号比较后也会得

到false。这种情况下我们一般会定义一个equals()方法来进行比较。

组合设计模式(CompositePattern)


? 什么时候用组合
组合是一种实现代码复用的方式,当我们在定义一个类的时候需要用到另外一个

类的方法时,就可以用组合。
? 怎么用组合
定义一个所需要的类类型的成员变量
通过构造函数进行装配,接收一个该类类型的对象,用成员变量引用
在需要使用另一个类的方法时通过成员变量访问
? 组合的优点
如果两个类没有父子关系,不合适用继承。
Java只支持单继承,组合不占用继承位置。

多态(Polymorphism)


? 什么是多态
多态字面上的意思就是多种形态。在面向对象语言中,我们可以将函数的形参定

义为一个父类类型,而在真正调用该函数时这个父类类型的所有子类对象都可以

传入,根据传入的子类对象不同函数可以运行处多种形态。
? 多态的特点
应用程序不必为每一个派生类(子类)编写功能调用,只需要对抽象基类进行处

理即可。这一招叫“以不变应万变”,可以大大提高程序的可复用性。
派生类的功能可以被基类的引用变量引用,这叫向后兼容,可以提高程序的可扩

充性和可维护性。现在写的程序可以调用将来写的程序不足为奇 。

抽象类


? 什么是抽象类
使用abstract关键字修饰的类就是抽象类,抽象类不能new对象,原因在于抽象类

含有抽象方法,不能被调用。
没有方法体的方法为抽象方法,使用abstract关键字修饰。
有抽象方法的类必须声明为抽象类,抽象类不一定含有抽象方法。 
? 为什么要定义抽象类
如果有多个类具有相同的方法声明,而方法的实现不一样,这时就可以抽象出父

类,将方法在父类中声明
别人在学习我们的软件时,只需要学习父类就知道子类有什么方法
在设计软件时,要尽力抽象父类,继承关系以3~4层为宜


final关键字

final标记的类不能被继承。
final标记的方法不能被子类重写。
final标记的变量即为常量,只能赋值一次。注意引用数据类型和基本数据类型的

区别。

使用public static final共同修饰的常量就是全局常量。通常全部字母大写。

本文标签
 {{tag}}
点了个评