0
点赞
收藏
分享

微信扫一扫

Java程序设计 Object类、匿名内部类


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);
}
}

Java程序设计 Object类、匿名内部类_后端

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));
}
}

Java程序设计 Object类、匿名内部类_抽象方法_02

接收任意引用类型的对象

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);
}
}

Java程序设计 Object类、匿名内部类_java_03

匿名内部类

匿名内部类顾名思义就是指没有一个具体名称的类,匿名内部类是在接口和抽象类的应用上发展起来的

//定义接口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();
}
}

Java程序设计 Object类、匿名内部类_抽象方法_04

如果接口的实现类只使用一次的话,那么没有必要单独定义一个子类

使用匿名内部类进行优化

interface A{
public void print();
}
class C{
public void a(){
this.b(new A() {
@Override
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();
}
}

Java程序设计 Object类、匿名内部类_抽象方法_05

分步解读

new A()

直接实例化接口对象

在接口实例化之后要有一个大括号,用于实现接口中的抽象方法

new A(){
public void print() {
System.out.println("123");
}
}

整个代码编写完后,实际上就是一个接口的实例化对象,里面的抽象方法也就实现了。



举报

相关推荐

0 条评论