Object类
Object类中自带的toString和equals函数(默认比较管理者是否管理相同的对象,可以通过对子类函数的重构实现正常比较)
// @Override//重写,编译器会默认构造类型检查public boolean equals(Object obj) {//向下造型CD cc = (CD)obj;return artist.equals(cc.artist);}
条件:只有当父类引用实际指向的是子类对象时,才能进行向下转型。换句话说,向下转型的安全性取决于对象的实际类型,而不是引用的声明类型。
eg.
class Animal {void eat() {System.out.println("Animal eating");}
}class Dog extends Animal {void bark() {System.out.println("Dog barking");}
}public class Main {public static void main(String[] args) {Animal animal = new Dog(); // 向上转型Dog dog = (Dog) animal; // 向下转型dog.bark(); // 调用子类方法}
}
在这个例子中,animal是一个Animal类型的引用,但它指向的是Dog对象,因此可以安全地向下转型为Dog。
String类型的对象无法进行修改,而是每次创造一个新的string
则可用StringBuffer解决这个问题(可以不断修改的对象)