标签:fly Java 内部 void 09 笔记 FlyAble new public
内部类:
将⼀个类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();
}
}
标签:fly,Java,内部,void,09,笔记,FlyAble,new,public 来源: https://blog.csdn.net/akanistha/article/details/119356654
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。