
类的内部成员之五:内部类(Person.Bird bird = p.new Bird();)
发布日期:2021-05-08 23:17:11
浏览次数:16
分类:博客文章
本文共 1899 字,大约阅读时间需要 6 分钟。
/*
* 类的内部成员之五:内部类 * 1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类 * * 2.内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内) * * 3.成员内部类: * 一方面,作为外部类的成员: * >调用外部类的结构 * >可以被static修饰 * >可以被4种不同的权限修饰 * * 另一方面,作为一个类: * > 类内可以定义属性、方法、构造器等 * > 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承 * > 可以被abstract修饰 * * * 4.关注如下的3个问题 * 4.1 如何实例化成员内部类的对象 * 4.2 如何在成员内部类中区分调用外部类的结构 * 4.3 开发中局部内部类的使用 见《InnerClassTest1.java》 * */public class InnerClassTest { public static void main(String[] args) { //创建Dog实例(静态的成员内部类): Person.Dog dog = new Person.Dog(); dog.show(); //创建Bird实例(非静态的成员内部类):// Person.Bird bird = new Person.Bird();//错误的 Person p = new Person(); Person.Bird bird = p.new Bird(); bird.sing(); System.out.println(); bird.display("黄鹂"); }}class Person{ String name = "小明"; int age; public void eat(){ System.out.println("人:吃饭"); } //静态成员内部类 static class Dog{ String name; int age; public void show(){ System.out.println("卡拉是条狗");// eat(); } } //非静态成员内部类 class Bird{ String name = "杜鹃"; public Bird(){ } public void sing(){ System.out.println("我是一只小小鸟"); Person.this.eat();//调用外部类的非静态属性 eat(); System.out.println(age); } public void display(String name){ System.out.println(name);//方法的形参 System.out.println(this.name);//内部类的属性 System.out.println(Person.this.name);//外部类的属性 } } public void method(){ //局部内部类 class AA{ } } { //局部内部类 class BB{ } } public Person(){ //局部内部类 class CC{ } } }
发表评论
最新留言
很好
[***.229.124.182]2025年04月15日 09时13分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BootStrapTable 错误
2021-05-09
PHP 配置文件
2021-05-09
PHP 脚本不报错
2021-05-09
代码整洁之道小结
2021-05-09
悲观锁与乐观锁
2021-05-09
js new Date 创建时间默认是8点
2021-05-09
Python实现cmd命令连续执行
2021-05-09
罗马数字
2021-05-09
IO多路复用小故事
2021-05-09
纠错码简介
2021-05-09
码云 Pages 搭建
2021-05-09
《论可计算数及其在判定上的应用》简单理解
2021-05-09
浮点数运算丢失精度
2021-05-09
中国剩余定理证明过程
2021-05-09
kafka告警简单方案
2021-05-09
SpringMvc @Validated注解执行原理
2021-05-09
java多线程执行问题
2021-05-09
java接口的应用举例
2021-05-09