1. 方法重写的作用和使用
方法重写子类继承了
父类的方法后,如果发现在需求下,父类的某些方法不太强大,我们就可以在子类中进行重写。
/**
* 宠物自白
*/
@Override // 注解不报错 说明你写的就是方法重写 (规范:必须要加)
public void showMyself() {
super.showMyself();
System.out.println("我的品种:"+breed);
}
留的疑问为什么在父类中方法不强大,子类又写一遍,还不能把父类中的删掉?美其名曰方法重写?
和多态有关。
2. 深入理解继承并了解Object类
Object:是Java中最顶级的类。超类(super class)
任何类都直接或者间接继承自Object。
Ctrl+T:查看继承体系
Ctrl+Shift+T:搜索类
Ctrl+O:查看本类中的所有属性和方法
Object它有很多方法,只要是定义一个类,这些方法都可以被定义的类所继承过去。
-
toString(); // 转换为字符串
public String toString() { // 默认输出当前对象的伪地址值
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
-
equals(); // 判断相等
public boolean equals(Object obj) { // 默认是用==来进行比较的
return (this == obj);
}
-
hashCode(); // 获取哈希值
-
getClass(); // 获取字节码对象
这些方法在Object中都有基本的实现内容,但是我们的需求一直多变,所以Object中的方法,不太适合,那么就可以进行方法重写。
例如String类就默认进行了重写equals()方法。
// Alt+Shift+S h 生成重写后的hashCode和equals方法。
equals的比较,把常量放在前面 否走会造成空指针异常
String name ="";
if (name.equals("heise")){
}else{
}
String s1="祝你今天考出好成绩!";
String s2=s1;
System.out.println(s1 == s2); //输出true 如果是new出来的话 输出就是false