Java学习笔记09
2021/8/3 20:07:31
本文主要是介绍Java学习笔记09,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
内部类:
将⼀个类A定义在另⼀个类B⾥⾯,⾥⾯的那个类A就称为内部类,B则称为外部类。
内部类的分类:
成员内部类(非静态内部类)
a.可以使用的权限修饰符: public protected default private
b.语法
class Car { //外部类 class Engine { //内部类 } }
//外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); Car.Engine engine = new Car().new Engine();
c.特点:
1.内部类中,可以随意调用外部类成员
2.外部类中,使用内部类成员时,需要创建内部类对象
3.无关类中使用成员内部类
1).间接调用,在外部类中的方法创建内部类的对象
2).直接调用,创建内部类对象
ps: new Outer().new Inner()
4.内部类和外部类中有同名的成员变量情况:
a.获取外部类成员变量
类名.this.变量名
b.获取内部类成员变量
this.变量名
c.获取方法内的局部变量
变量名
局部内部类[匿名内部类]
局部变量:
a.在方法内部定义的类,只在方法中有效
b.在局部内部类中,使用局部变量,必须是final修饰的
c.一次性的类,只能使用一次
d.不能使用访问修饰符
e.作用:一般都是结合抽象类/接口使用
[*匿名内部类]:
作用:实现接口/继承抽象类
缺点:一次性使用
语法:
接口/抽象类 引用名 = new 接口/抽象类(){实现类实现的抽象方法}
new ⽗类名或者接⼝名() { // ⽅法重写 @Override public void method() { // 执⾏语句 } };
匿名对象:
只能使用一次,只能调用一次方法
public abstract class FlyAble { public abstract void fly(); } public class InnerDemo { public static void main(String[] args) { /* * 1.等号右边:是匿名内部类,定义并创建该接⼝的⼦类对象 * 2.等号左边:是多态赋值,接⼝类型引⽤指向⼦类对象 */ FlyAble f = new FlyAble() { public void fly() { System.out.println("我⻜了~~~"); } }; // 调⽤fly⽅法,执⾏重写后的⽅法 f.fly(); } } public class InnerDemo2 { public static void main(String[] args) { /* * 1.等号右边:定义并创建该接⼝的⼦类对象 * 2.等号左边:是多态,接⼝类型引⽤指向⼦类对象 */ FlyAble f = new FlyAble() { public void fly() { System.out.println("我⻜了~~~"); } }; // 将f传递给showFly⽅法中 showFly(f); } public static void showFly(FlyAble f) { f.fly(); } }
这篇关于Java学习笔记09的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南