美文网首页
匿名内部类

匿名内部类

作者: xiaoliman | 来源:发表于2017-08-07 19:44 被阅读0次

1.相似于实现类 (具体看代码)
2.父类调用的子类的方法 run.run();
3.如果只想创建一个子类对象 就可以使用匿名内部类 操作简单
4.如果想创建多想子类对象 ,就得创建普通子类或者 实现类的方式
5.new Run(){}.run();
6.抽象类有构造方法 子类可以继承父类的非私有属性方法 这里的构造方法是执行子类时加载父类的非私有属性方法
7.格式1:
父类(接口) 对象名 = new 父类(接口){
重写 父类的方法 (无论抽象与否)
};
格式2:
即使匿名内部类 也是 匿名对象
new 父类(接口){
重写 父类的方法 (无论抽象与否)
};

package com.qf.demo;
/**
 * 如果只想创建一个  子类对象  , 就可以用 匿名内部类的形式
 *          操作简单 
 * 如果  想创建多个子类对象, 创建普通子类或者是实现类的方式
 * 
 *
 */
public class Test2 {
    public static void main(String[] args) {
        // 自己么有重新 起名字  
        // 但是没有名字   语法报错
        // 让 Run帮助代替  实现类的名字
         // 父类      =   子类      
        Run run = new Run() // 真正new 的是  实现类的对象
        {// 实现类   没有实现类的名字
            
            public void run() {
                System.out.println("动物跑步");
            }
        };
        run.run();
        run.run();      
        new Run() {
            public void run() {
                System.out.println("小猫跑步");
            }
        }.run();
        // 匿名内部类
        Run run2 = new Run() {
            
            public void run() {
                // TODO Auto-generated method stub
                
            }
        };
        // 线程匿名内部类
        new Runnable() {
            
            public void run() {
                // TODO Auto-generated method stub
                
            }
        };
        
    }
}
interface Run{
    public void run();
}

另外一种是带参数的

package com.qf.demo;
/**
 * 父类(接口)  对象名 = new  父类(接口){
 *  
 *      // 重写  父类的方法  (无论抽象与否)
 *  
 * }
 * 
 *  即使匿名内部类 也是  匿名对象
 *  new  父类(接口){
 *  
 *      // 重写  父类的方法  (无论抽象与否)
 *  
 * }
 * 
 * 匿名内部类 只能 创建一次对象
 *      好处: 书写格式简单
 *      弊端: 只能用一次
 *
 */
public class Test3 {

    public static void main(String[] args) {
        //普通调用
        Cat cat = new Cat("猫星人", 2);
        cat.eat();
        
        Cat cat2 = new  Cat("火星喵", 100000);
        cat2.eat();
        
         //匿名内部类(带参数的)
        //向上转型 
        //  父类      new 子类  
        Animal animal = new Animal("",6) {
            @Override
            public void eat() {
                System.out.println("abcd");
            }
            @Override
            public void sleep() {
                System.out.println("heheheh");
            }
            
        };
        //会调用重写以后的
        animal.eat();
        animal.sleep();
        //另外一种方式也可以实现匿名内部类的调用方法
        new Animal("",9){
            @Override
            public void eat() {
                System.out.println("lingwai");
            }
            @Override
            public void sleep() {
                System.out.println("hahaha");
            }
        }.eat();
         
    }
}

 abstract class Animal{
     private String name;
     private int age;
     
     public abstract void eat();

    public Animal(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    
    public void sleep(){
        System.out.println("睡");
    }

 }
 
 class Cat extends Animal{

    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("小猫吃鱼");
    }
     
 }
 
 class Dog  extends Animal{

    public Dog(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("小狗吃骨头");
    }
     
 }

总结匿名内部类:
1.匿名内部类两种方式 :有参数 无参数
2.看文章开头的7格式2中 也可以在分号前面

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • java中的匿名内部类总结

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • 技术问 - 匿名内部类

    匿名内部类 匿名内部类的格式 匿名内部类的本质是什么? 代码: 匿名内部类在开发中使用: 看结果写代码

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • Android菜鸟起飞|三种方法实现监听事件

    Android实现监听事件的三种方式(匿名内部内实现,外部类实现,接口实现)详解 1. 使用匿名内部类的方式实现监...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

  • 详解匿名内部类【Java提高九】

    在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要...

网友评论

      本文标题:匿名内部类

      本文链接:https://www.haomeiwen.com/subject/wugalxtx.html