首页 > 代码库 > Java匿名内部类的学习

Java匿名内部类的学习

新建一个抽象类或者接口,抽象类中只要有一个抽象方法就是抽象类,接口的定义是:里面的方法全部都是抽象方法,接口和抽象类不能直接实例化,需要子类来实现

/* 匿名内部类:

1。匿名内部类其实就是内部类的简单样式

2.定义匿名内部类的前提,内部类必须是继承一个类或者实现接口

3.格式:new 父类或者接口(){定义子类的内容(如函数等)}

4.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。

5.匿名内部类钟定义的方法最好不要超过3个。

多了建匿名内部类的代码会太多,很冗余。

*/

public abstract class Animal {

    public String name;
    public String sex;

    public abstract void run();
    public abstract void eat(String name);
    /**
     * 语法规则: abstract 不能够用于 private修饰的方法,不能够用于 final修饰的方法 abstract
     * 不能够用与修饰static方法 abstract 不能够修饰成员属性
     */

    // 这不是抽象方法
    public final void eat() {
    }

}

然后新建一个子类

public class AnimalDemo {
    /**
     * 匿名内部类的使用
     * 
     * @param args
     */
    public static void main(String[] args) {
    //匿名内部类的使用,匿名内部类是实现了父类的抽象方法,或者实现接口的全部抽象方法 Animal a
= new Animal() { @Override public void run() { System.out.println("使用内部类的跑"); } @Override public void eat(String name) { System.out.println("使用内部类的跑" + name); } }; a.eat(new Date().toString()); // 下面是不用匿名内部类的使用,等效于上面的 /* * Animal a2=new Dog(); a2.eat("dog"); */ Animal a3 = new Cat(); a3.eat(""); } } // 下面是不用匿名内部类的使用,等效于上面的 class Cat extends Animal { @Override public void run() { System.out.println("没有使用内部类的跑"); } @Override public void eat(String name) { System.out.println("没有使用内部类 ,猫吃" + name); } }

 

Java匿名内部类的学习