package com.atguigu09._inner;
/**
* @Description
* @authr CodePerWorld Email:
* @date
*/
public class OuterClassTest1 {
public Comparable getInstance(){
//方法一:接口非匿名实现类的非匿名对象
class MyComparable implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}
MyComparable myComparable = new MyComparable();
// return myComparable;
//方法二:接口非匿名实现类的匿名对象
class MyComparable2 implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}
// return new MyComparable();
//方法三:接口的匿名实现类的非匿名对象
Comparable comparable = new Comparable() {
@Override
public int compareTo(Object o) {
return 0;
}
};
// return comparable;
//方法四:接口的匿名实现类的匿名对象
return new Comparable() {
@Override
public int compareTo(Object o) {
return 0;
}
};
}
}
主要就是把接口理解成一个父类就可以了,可以对父类继承一个匿名子类,同样道理对接口继承一个匿名实现类,那么实现类和子类都可以new一个匿名对象,对象又可以做各种操作如调用类方法,或者赋值之类的。
以上的代码还有内部类,就是类内的方法要求返回一个类对象,方法中执行的就是生成一个对象,也算是一个应用吧
public class ObjectTest {
public static void main(String[] args) {
new Object(){
public void test(){
System.out.println("我是一个匿名子类");
}
}.test();
}
}
以上代码就是父类Object生成一个匿名子类,子类中有新定义的test方法,再new一个匿名对象,调用对象的test方法,接口之所以看起来没这么奇怪,是因为接口中有方法必须要实现,所以new一个实现类的时候在里面写实现方法的代码,但是匿名子类突然这么一写有点不理解,遂写下来方便记忆。