博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA匿名内部类
阅读量:6397 次
发布时间:2019-06-23

本文共 2086 字,大约阅读时间需要 6 分钟。

  • 首先定义一个抽象类Computer
public abstract class Computer {    //抽象类是不可以常见对象的    int a=1;    public abstract void online();    public abstract void watchTV();}
  • 入口:Test 注意:抽象类有构造方法但是接口是没有构造方法的,所以下面代码中new 后面加的是匿名抽象类
public class Test {    public static void main(String[] args) {//        生成的二进制字节码文件(.class文件)名称为:Outer.class文件        //创建内部类对象的第一种写法:通过这种方式常见出来的外部类对象没有引用,我们不能引用他的对象和方法//        匿名:        //下面的这种创建内部类对象的方法new Outer()并没有被引用,所以他是一个匿名的对象        Outer.Inner inner = new Outer().new Inner();        inner.b();        System.out.println("------------------------------------------");        //创建内部类的第二种写法:先创建外部类对象,然后由外部类的对象去创建内部类的对象        Outer outer = new Outer();//创建了外部对象        Outer.Inner inner1 = outer.new Inner();//创建内部的对象        inner1.b();        /**匿名的概念:         *匿名内部类:这下面其实是有一个类的存在的,但是我们看不见类的任何影子         *在编译后的目录中多出来一个Test$1.class这是一个内部类名字是:Test$1.class         *相当于创建出来一个匿名的内部类(这个匿名内部类相当于这个抽象类的子类)然后继承了抽象类,并实现了他的抽象方法         *         * 这个匿名内部类是一次性的         */        Computer PC = new Computer() {            @Override            public void online() {                System.out.println("匿名内部类中的方法  上网");            }            @Override            public void watchTV() {                System.out.println("匿名内部类中的方法  看电视");            }        };//注意最后的分号不能少        System.out.println("抽象类中的变量 a"+PC.a);        PC.online();        PC.watchTV();        /**         * 匿名内部类的创建形式:         *         * new ---抽象类或者接口名--()---{}实现抽象方法的地方----分号         *         *         */                Standard a=new Standard() {                    @Override                    public void supply() {                        System.out.println("我的电脑");                    }                    @Override                    public void reticle() {                    }                    @Override                    public void usb() {                    }                };        a.supply();        /**         * 讲继承的时候说过:没有父类就没有子类         * 对于内部类也一样:没有外部类的对象就不能创建一个内部类的对象         * 创建内部类对象的方法:通过外部类的对象去创建内部类的对象         */    }}

 

转载于:https://www.cnblogs.com/zhaiyaohua/p/5800034.html

你可能感兴趣的文章
maven插件运行过程中自动执行sql文件
查看>>
New UWP Community Toolkit - XAML Brushes
查看>>
C# ==、Equals、ReferenceEquals 区别与联系 (转载)
查看>>
layer弹出层的关闭问题
查看>>
LeetCode——3Sum & 3Sum Closest
查看>>
netstat详解
查看>>
微信小程序 --- e.currentTarget.dataset.id 获取不到值
查看>>
Introducing stapbpf – SystemTap’s new BPF backend
查看>>
详细介绍MySQL/MariaDB的锁
查看>>
0603-Zuul构建API Gateway-通过Zuul上传文件,禁用Zuul的Filter
查看>>
cocos2dx-2.x CCFileUtils文件管理分析(2)
查看>>
Emacs中多个golang项目的配置方法
查看>>
未知宽高div水平垂直居中3种方法
查看>>
Vim替换查找
查看>>
如何用sysbench做好IO性能测试
查看>>
利用线性回归模型进行卫星轨道预报
查看>>
懒加载和预加载
查看>>
前端面试题
查看>>
Python的赋值、浅拷贝、深拷贝
查看>>
用python操作mysql数据库(之代码归类)
查看>>