一、Object类
Object类的主要方法
(1)toString()方法
加与不加toString的效果相同,都会调用父类Object中的toString方法。
public static void main(String[] args){
Person p=new Person();
System.out.println("不加toString的输出结果"+p);
System.out.println("加toString的处处结果"+p.toString());
}
(2)equals()方法
public static void main(String[] args) {
Student s1=new Student("张三",12);
Student s2=new Student("李四",13);
System.out.println(s1.equals(s2));
}
对象的比较---- ==和equals()
==:
比较两个基本类型变量的值是否相等。
比较两个引用类型的值即内存地址是否相等,即是否指向同一对象。
equals:
两对象的内容是否一致。
示例:
- object1.equals(object2) 如:p1.equals(p2)
比较所指对象内容是否一致,是比较两个对象,而非两个基本数据类型的变量。 - object1 == object2 如:p1 == p2
比较p1和p2的值即内存地址是否相等,即是否是指向同一对象。
自定义类需重写equals(),否则其对象比较结果总是false。
二、多态
对应同一个指令(调用同一个名称的方法),不同的对象给予不同的反应(不同的方法实现)规范(多态实现的前提):
1.必须要有继承关系。
2.子类方法必须重写父类的方法。
3.父类引用指向子类对象。
主人类:
public class Person {
public void feed(Pet pet){
pet.feed();
}
测试方法:
Person p=new Person();
Pet dog=new Dog();
Pet cat=new Cat();
如何实现多态
1.编写父类。
2.编写子类,子类重写父类的方法。
3.运行时,使用父类的类型,子类的对象。
实现多态的两种形式
1.使用父类作为方法形参实现多态。
public class Person {
public void feed(Pet pet){
pet.feed();
}
}
2.使用父类作为方法返回值实现多态。
主人类:
public class Person {
public void feed(Pet pet){
pet.feed();
}
}
测试方法:
Person p=new Person();
Pet dog=new Dog();
p.feed(dog);
父类到子类的转换:
1.向下转型(强制类型转换)
当父类需要转成子类的时候,要进行强制转换,但是在强制转换之前一定要先判断父类引用指向的子类对象是谁,如果无法确定,那么在运行的时候可能会出错。
当子类需要向父类转换的时候,直接自动转换
Pet dog=new Dog();
Dog dog=(Dog)pet;
2.instanceof运算符
Pet pet=p.buyPet(1);
if(pet instanceof Dog){
System.out.println("买的是一只狗");
}