<
Java 中面向对象的三大特性
>
上一篇

Java 随手笔记
下一篇

Java 关键字
封装、继承、多态
苏轻最后编辑于2018年12月5日15:01:02

封装

  封装的实现,得益于访问控制符的使用。

  类的属性一般使用private访问权限,然后提供属性相应的get/set方法来对相关属性赋值与读取。而这些get/set方法则使用public修饰,以便于外界调用。

  通常情况下,只用于本类的辅助性方法用private修饰,希望其他类调用的方法用public修饰。

值得注意的是 boolean 变量的 get 方法需要使用 is 开头!

继承

  Java 中的类只有单继承(接口有多继承),在定义一个类的时候可以使用关键字 extends 指定它的父类。子类继承父类,就可以得到父类(除了构造方法)的全部属性和方法,但仍然不可以直接访问父类的私有属性和方法。

  如果定义一个类时没有使用 extends,那么它的父类是:java.lang.Object

方法的重写(override)

  子类可以重写父类的方法,在调用这个方法时,子类重写后的方法会直接替换掉父类对应的方法。但是方法的重写必须遵循几个原则:

下面苏轻就介绍两个经常会去重写的方法!

equals 方法

  苏轻经常使用==来判断两个数是否相等,这在处理基本类型的数据时很实用。但是在遇到引用类型时,情况有所变化。

  如果==的两边是引用类型(对象,比如两个字符串),==会去判断它们的地址是否相同。也就是说这时即使它们(这两个字符串)的内容可能完全相同,只要它们不是指向同一个地址,它们就不相等。于是,在所有类的基类Object类中,定义有一个equals()的方法,为我们提供了定义“对象内容相等”的逻辑。

  JDK提供的一些类,如String类、Date类、包装类等,都已经重写了Object类的equals方法。调用这些类的equals方法,例如:x.equals(y),当xy所引用的对象是同一类对象且属性内容相等(可以不是同一个对象)时返回true,否则返回false

toString 方法

  在Object类中还定义有一个toString()方法,在打印或用字符串连接对象时,就会自动调用该对象的toString()方法。所以我们就可以去重写这个方法,来自定义输出某些对象的内容。

关键字 super

  关键字super是直接父类对象的引用,在子类中可以随时通过super.xxxx的方式来访问父类中被子类覆盖的方法或属性。

  子类的构造方法中如果有super(),那么必须位于第一句。如果子类构造方法的第一行代码没有显式地调用super()this()Java仍然会默认调用super(),这里的含义是调用父类的无参数构造方法。因此,构造方法里的super()是可以省略的。

多态

  首先必须明确一点:多态是方法的多态,与属性无关。当父类引用调用子类重写的方法时,多态就出现了。

  当某方法的形参是一个父类的引用时,此方法实际使用时的实参可以是该父类任意的子类对象,可以通过不同的子类对象实现不同的行为方式。

  多态的主要优势是提高了代码的可扩展性,符合开闭原则。但是多态也有弊端,就是无法调用子类独有的方法。

Top
Foot