Object类
在Java中提供了一个 Object 类,它是所有类的父类,每个类都直接或间接继承自该类, Object 类通常被称为超类或根类。当定义一个类时,如果没有使用"extends"关键字为这个类显式地指定父类,那么该类会默认继承 Object 类。
Object 类定义了一些方法:
//负责克隆对象
Object clone()
//获取对象的哈希值
int hashCode()
//判断两个对象是否相等
boolean equals(Object obj)
//将对象转换成字符串形式(一般会重写)
String toString()
重写 Object类中的 toString() 方法
源码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
=============================
public class Animal {
//重写 Object类的 toString() 方法
@Override
public String toString() {
return "这是一只动物";
}
}
=============================
//主方法
public class Application {
public static void main(String[] args) {
//创建animal对象
Animal animal = new Animal();
//打印重写后的toString()方法
System.out.println(animal.toString());
}
}
Animal类重写了 Object类的 toString()方法,当在 main()方法中调用toString()方法时,就输出了 Animal类的描述信息。
Object类中的equals(Object obj)方法
源码:
public boolean equals(Object obj) {
return (this == obj);
}
对于"==",如果用于基本数据类型,直接比较其存储的"值"是否相等;如果用于引用数据类型,比较的是所指向的对象的内存地址是否相等
对于"equals()"方法,不能作用于基本数据类型,只能用于引用数据类型,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;如果重写了equals方法,比较的是所指向的对象的内容。
注意:
String类已经重写了toString方法和equals方法,比较个字符串不能使用==,必须使用equals
匿名内部类
在一个类的内部定义的类,包括:实例内部类,静态内部类,局部内部类。
匿名内部类是局部内部类的一种,没有名字
public class Test05 {
public static void main(String[] args) {
MyMath mm = new MyMath();
//在接口后面写上{},里面写上对接口内部方法的实现,这就是匿名内部类
mm.mySum(new ComputeImpl() {
public int sum(int a, int b) {
return a + b;
}
}, 300, 200);
}
}
interface Compute {
int sum(int a, int b);
}
/*
class ComputeImpl implements Compute {
public int sum(int a, int b) {
return a + b;
}
}
*/
class MyMath {
public void mySum(Compute c, int x, int y) {
int retValue = c.sum(x, y);
System.out.println(x + "+" + y + "=" + retValue);
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)