Object类
Object类是所有Java类的根基类,所有Java对象都拥有object类的属性和方法,如果在类的声明中未使用extends关键字指明其父类,则其默认继承object类。
注意:除了构造方法之外的所有属性和方法都被继承。但是不是所有的都能直接使用,如私有属性等。
1、toString方法
object类中定义的public String toString()方法,其返回值类型是String,默认返回“类名+@+16进制hashcode”,在打印输出或者用字符串连接对象时,会自动调用该对象的toString()方法。
2、==和equals方法
“==”代表双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等,即表示是同一个对象。
object类中有定义public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。默认是比较两个对象的hashcode,是同一个对象返回true,否则返回false。
3、super关键字
super可以看作是直接父类对象的引用,可以通过super来访问父类中被子类覆盖的方法或属性。
使用super调用普通方法,语句中没有位置限制,可以在子类中随便调用。
若是构造方法的第一行代码没有显式调用super(…)或者this(…);那么Java默认会调用super(),含义是调用父类的无参构造方法,这里的super()可以省略。
class FatherClass{
public int value;
public void f(){
value=100;
System.out.println("FatherClass.value="+value);
}
class ChildClass extends FatherClass{
public int value;
public void f(){
super.f();
value=200;
System.out.println("ChildClass.value="+value);
System.out.println(value);
System.out.println(super.value);
}
}
/*输出结果
FatherClass.value=100
ChildClass.value=200
200
100
*/
package com.company;
public class TestSuper {
public static void main(String[] args){
System.out.println("开始创建一个ChildClass对象.........");
new ChildClass();
}
}
class FatherClass{
public FatherClass(){
//默认调用Object类的无参构造器
System.out.println("创建FatherClass");
}
}
class ChildClass extends FatherClass{
public ChildClass(){
//所有构造方法的的第一句总是super(...)/this(),你不加,编译器自动加
System.out.println("创建ChildClass");
}
}
/*输出结果
开始创建一个ChildClass对象.........
创建FatherClass
创建ChildClass
*/
4、IDEA相关快捷键
- 类的结构视图:alt+7
- 看类的源码:ctrl+左键
- 查看类的关系:鼠标放到类名上,右键–>Diagram–>show Diagram
- 自动生成构造器、get、set方法、equals等:alt+insert