zoukankan      html  css  js  c++  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); } }
  • 相关阅读:
    TIOBE 2011年5月编程语言排行榜:C#和ObjectiveC上升趋势不减 狼人:
    20款绝佳的HTML5应用程序示例 狼人:
    为什么开发人员不能估算时间? 狼人:
    4款基于Django框架的开源软件推荐 狼人:
    jQuery 1.6正式版发布 狼人:
    设计者更喜欢什么操作系统 狼人:
    网络结点流网络浅析 By ACReaper
    效果实现SWFUpload在JQueryUI的Dialog中无法实现上传功能
    响应中断向量美妙的微机原理2013/5/2(2)
    内存图片IOS app启动动画的实现
  • 原文地址:https://www.cnblogs.com/DonAndy/p/6272457.html
Copyright © 2011-2022 走看看