博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java的四种内部类
阅读量:7099 次
发布时间:2019-06-28

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

项目结构

接口

public interface Vehicle {    public String desc(String detail);}

public class Car {    private static String type = "汽车";    private String desc;    public Car(String desc) {        this.desc = desc;    }    /*     *  常规内部类:定义在外部类类体中,直接使用外部类的实例变量和实例方法。     */    class Ferrari{        private String name;        public Ferrari(String name) {            this.name = name;        }        public String desc(){            return desc + " : " + name;        }    }    /*     * 静态内部类:只能访问外部类的static成员,不能直接访问外部类的实例变量、实例方法     */    public static class Jaguar{        private static String name = "捷豹";        public String desc(){            return type + " : " +name;        }    }    /*     *  局部内部类:在方法中定义,只能访问方法的final型实参、final型局部变量。     *  方法结束后,方法的实参、局部变量的生命周期结束,而局部内部类的对象仍然存在。     */    public String manufacture(final String manufacturer){        final String desc = "中型车";        class Ford{            private String name;            public Ford(String name){                this.name = name;            }            public String getName() {                return name;            }        }        Ford ford = new Ford("金牛座");        return manufacturer + " : " + desc + " : " + ford.getName();    }    /*     * 匿名内部类:     * 1 继承一个类或实现一个接口。不能同时实现一个接口和继承一个类,也不能实现多个接口。     * 2 不能定义构造方法。     * 3 匿名内部类的定义和第一次使用都发生在同样一个地方。     */    private Vehicle vehicle = new Vehicle() {                @Override        public String desc(String detail) {            return desc + " : " + detail;        }    };    public Vehicle getVehicle() {        return vehicle;    }}

运行

public class Test {    public static void main(String[] args) {        Car car = new Car("独立悬挂");        // 常规内部类        Car.Ferrari ferrari = car.new Ferrari("Ferrari 488GTB");        System.out.println(ferrari.desc());        // 静态内部类        Car.Jaguar jaguar = new Car.Jaguar();        System.out.println(jaguar.desc());        // 局部内部类        System.out.println(car.manufacture("长安福特"));        // 匿名内部类        System.out.println(car.getVehicle().desc("本田第十代雅阁"));    }}

 

转载于:https://www.cnblogs.com/sea-breeze/p/7002401.html

你可能感兴趣的文章
基于开源MQTT自主接入阿里云IoT平台(Java)
查看>>
java8中的时间类LocalDate、LocalTime、LocalDateTime使用总结
查看>>
杜跃进:数据安全治理的基本思路
查看>>
C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码...
查看>>
JavaWeb页面增加隐藏版权信息
查看>>
T-SQL学习中--取得部分检索数据记录
查看>>
# 小贼音乐--Swift开发笔记 Step 1
查看>>
【项目管理】低成本提高关键路径成功率
查看>>
使用LUMPY检测结构变异
查看>>
安装Coturn(TURN / STUN服务器)
查看>>
出差第三天
查看>>
度小满获南京银行三年100亿元授信额度,双方并合作共同发力消费金融
查看>>
自动化运维工具Ansible的简单使用
查看>>
at,crontab定时程序
查看>>
zabbix添加端口监控
查看>>
放假前的“例行安检”
查看>>
基本形态学算法
查看>>
PostgreSQL 11 1Kw TPCC , 1亿 TPCB 7*24 强压耐久测试
查看>>
修改toolbar自适应报表宽度
查看>>
Linux基础命令---chkconfig
查看>>