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); } }
  • 相关阅读:
    C#面向对象编程基础-喜课堂笔记
    [爬虫]通过url获取连接地址中的数据
    第10季asp.net基础
    初学MVC
    学习MVC遇到的问题
    飞行棋小项目
    JAVAscript学习笔记
    iOS 清除xcode缓存和生成文件
    Access用OleDbParameter更新/插入数据
    SQLite动态库下载
  • 原文地址:https://www.cnblogs.com/DonAndy/p/6272457.html
Copyright © 2011-2022 走看看