java日常学习:内部类、局部内部类、匿名内部类
来源:互联网 发布:无实体软件出口 编辑:程序博客网 时间:2024/06/06 18:36
java代码块
内部类
内部类: 在一个类的内部定义另外一个类,那么另外一个类则称作为内部类 。
内部类的class文件名: 外部类$内部类.class
成员内部类:
成员内部类的访问方式:
方式一: 在外部类提供一个方法创建内部类的对象进行访问。
方式二:在其他类中直接创建内部的对象进行访问。 格式: 外部类.内部类 变量名 = new 外部类().new 内部类(); 注意:静态成员内部类在其他类创建对象的格式: 外部类.内部类 变量名 = new 外部类.内部类();
内部类的好处: 直接访问外部类的所有成员。
应用场景: 我们在描述A事物的时候,A事物内部还维护了另外一个B事物,
而且B事物还必须 要访问到A事物的成员,那么这时候我们就可以使用内部类描述B事物。
比如: 人– 心脏 . 图形化界面编程
成员内部类要注意的细节:
1. 内部类可以直接访问外部类的所有成员。
2. 内部类与外部类存在同名的成员时, 在内部类中默认是访问内部类的成员, 可以通过”外部类.this.成员”进行指定访问外部类的成员。
3. 私有的成员内部类只能通过在外部类提供一个公共的方法进行访问。 在其他类无法访问。
4. 如果一个成员内部类定义了静态的成员,那么该类也必须使用static修饰。
疑问:为什么如果一个成员内部类定义了静态的成员,那么该类也必须使用static修饰 ???
静态的成员变量是不依赖对象而存在的
局部内部类
局部内部类:在一个方法内部定义的类称作为局部内部类。
局部内部类要注意的细节:
1. 如果局部内部类要访问局部变量,那么局部变量必须使用final去修饰。
匿名内部类
匿名内部类:没有类名的内部类就称作为匿名内部类。
匿名内部类的好处: 简化书写。
匿名内部类的使用前提: 必须存在继承或者实现的关系。
注意的事项:
1. 匿名内部类只是没有类名而已,其他的一切成员都是具备的。
实现关系下的匿名内部类:
interface Dao{ public void add();}class Outer{ //实现关系下的匿名内部类 public void show(){ //这里创建的不是Dao接口的对象,创建的是Dao接口实现类的对象。 new Dao(){ public void add(){ System.out.println("添加成功.."); } }.add(); }}
练习
/*需求: 定义一个局部内部类继承Animal,创建对象调用run方法。*/abstract class Animal { public abstract void run(); public abstract void sleep();}class Outer { public void print (){ /* class Cat{ public void run(){ System.out.println("小猫跑的快!"); } public void sleep(){ System.out.println("小猫在睡觉!"); } } //创建局部内部类的对象 Cat c = new Cat(); c.run(); c.sleep(); */ //匿名内部类只是没有类名而已,其他的一切成员都是具备的; //多态 Animal a = new Animal(){ // 这里创建的并不是Animal的对象,创建的是Animal的子类对象,只不过其子类目前没有类名借用了ANimal名字而已; //匿名内部类的成员; String name; //证明匿名内部成员是可以具备的; public void run(){ System.out.println("小猫跑的快!"); } public void sleep(){ System.out.println("小猫在睡觉!"); } //在不声明变量接收的情况下,这里可以直接 .run/.sleep; }; a.run(); a.sleep(); }}class Demo2{ public static void main(String[] args) { new Outer().print(); }}
用于平时自己复习回顾,如有错误,欢迎指正
- java日常学习:内部类、局部内部类、匿名内部类
- java的内部类、匿名内部类、局部内部类
- java 成员内部类 局部内部类,匿名内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- java个人学习笔记13(Object+内部类+局部内部类+匿名内部类)
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- java成员内部类、局部内部类、静态内部类和匿名内部类
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- java 内部类分为成员内部类,局部内部类,匿名内部类,
- java内部类之私有内部类、局部内部类、匿名内部类
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- 内部类,局部类,匿名内部类
- C++中endl、“\n”和‘\n’的区别
- mybatis分页插件pagehelper的使用
- Aras 修改正则表达式验证时,错误的提示信息
- 第二章 第三课 Scratch作品:换装魔术表演(深入练习造型)
- [POJ1601]青蛙的约会(exgcd)
- java日常学习:内部类、局部内部类、匿名内部类
- C#入门基础知识(1)
- MongoDB BadValue configdb supports only replica set connection String
- python 函数式
- Sublime text3 setting config
- 一、Objective-c-NSObject类的load和initialize方法
- Java并发之Exchanger详解
- Jsp隐式对象
- SecureCrt ssh 玩起来