Java程序设计 Object类、匿名内部类
Object类
Java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object类的子类
Object类中的主要方法
名称 | 描述 |
public Object() | 构造方法 |
public boolean equals(Object obj) | 对象方法 |
public int hashCode() | 取得Hash码 |
public String toString() | 对象打印时调用 |
测试toString()
class Test{
// 重写toString()方法
public String toString(){
return "测试成功";
}
}
public class Hello {
public static void main(String[] args) {
Test a = new Test();
System.out.println(a);
}
}
equals()方法主要的功能就是用于对象的比较
class Test{
}
public class Hello {
public static void main(String[] args) {
Test a = new Test();
Test b = new Test();
System.out.println(a.equals(a));
System.out.println(a.equals(b));
System.out.println(b.equals(b));
a=b;
System.out.println(a.equals(b));
}
}
接收任意引用类型的对象
public class Hello {
public static void main(String[] args) {
print("45");
int t[]={12,3,4};
for(int i=0;i<t.length;i++){
print(t[i]);
}
}
public static void print(Object o){
System.out.println(o);
}
}
匿名内部类
匿名内部类顾名思义就是指没有一个具体名称的类,匿名内部类是在接口和抽象类的应用上发展起来的
//定义接口A
interface A {
//定义抽象方法
public void print();
}
//接口实现
class B implements A{
//方法重写
public void print(){
System.out.println("123");
}
}
class C{
public void a(){
// 传递子类实例
this.b(new B());
}
// 接收接口实例
public void b(A c){
c.print();
}
}
public class Hello {
public static void main(String[] args) {
new C().a();
}
}
如果接口的实现类只使用一次的话,那么没有必要单独定义一个子类
使用匿名内部类进行优化
interface A{
public void print();
}
class C{
public void a(){
this.b(new A() {
public void print() {
System.out.println("123");
}
});
}
public void b(A c){
c.print();
}
}
public class Hello {
public static void main(String[] args) {
new C().a();
}
}
分步解读
new A()
直接实例化接口对象
在接口实例化之后要有一个大括号,用于实现接口中的抽象方法
new A(){
public void print() {
System.out.println("123");
}
}
整个代码编写完后,实际上就是一个接口的实例化对象,里面的抽象方法也就实现了。