Object类
³ Object类是所有Java类的根基类
³ 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person {
...
}
³ 等价于:
public class Person extends Object {
...
}
toString方法
³ Object类中定义有public String toString()方法,其返回值是 String 类型,描述当前对象的有关信息。
³ 在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的 toString()方法
³ 可以根据需要在用户自定义类型中重写toString()方法。
equals方法
³ Object类中定义有:
² public boolean equals(Object obj)方法
± 提供定义对象是否“相等”的逻辑。
² Object 的 equals 方法 定义为:x.equals ( y ) 当 x 和 y是同一个对象的应用时返回 true 否则返回 false
² J2SDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法, x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。
² 可以根据需要在用户自定义类型中重写equals方法。
super关键字
super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性
通方法:
没有顺序限制。可以随便调用。
构造函数中: 任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(...);那么Java默认都会调用super();作为父类的初始化函数。 所以你这里的super();加不加都无所谓。
方法的重写(override)
³ 在子类中可以根据需要对从基类中继承来的方法进行重写。
³ 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
³ 重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
使用访问控制符,实现封装
à范围越来越大
同一个类 |
同一个包中 |
子类 |
所有类 |
|
private |
* |
|
|
|
default |
* |
* |
|
|
protected |
* |
* |
* |
|
public |
* |
* |
* |
* |
封装的使用细节
类的属性的处理:
一般使用private. (除非本属性确定会让子类继承)
提供相应的get/set方法来访问相关属性. 这些方法通常是public,从而提供对属性的读取操作。 (注意:boolean变量的get方法是用:is开头!)
一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public。