3.4.内部类与匿名类
来源:互联网 发布:网络布线视频教程下载 编辑:程序博客网 时间:2024/06/14 19:04
(1)带包的编译和运行
javac -d . HelloWorld.java
(2)package,import,class的顺序
package > import > class
2.权限修饰符
权限修饰符本类同一个包下(子类和无关类)不同包下(子类)不同包下(无关类)privateY 默认YY protectedYYY publicYYYY3.常见的修饰符
(1)分类:
权限修饰符:private,默认,protected,public
状态修饰符:static,final
抽象修饰符:abstract
(2)常见的类及其组成的修饰
类:
默认,public,final,abstract
成员变量:
private,默认,protected,public,static,final
构造方法:
private,默认,protected,public
成员方法:
private,默认,protected,public,static,final,abstract
(3)另外比较常见的:
public static final int X = 10;
public static void show() {}
public final void show() {}
public abstract void show();
4.内部类
(1)内部类的访问规则
A:可以直接访问外部类的成员,包括私有
B:外部类要想访问内部类成员,必须创建对象
(2)内部类的分类
A:成员内部类
B:局部内部类
(3)成员内部类
A:private 为了数据的安全性B:static 为了访问的方便性:静态内部类访问的外部类数据必须用静态修饰。
成员内部类不是静态的:
外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
成员内部类是静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
(内部类可以用静态修饰,是因为内部类可以看出是外部类的成员)
(4)成员内部类的面试题
30,20,10
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public viod show() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer.this.num);
}
}
}
(5)局部内部类
局部内部类访问局部变量必须加final修饰:因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。所以,堆内存还是用该变量,而改变量已经没有了。为了让该值还存在,就加final修饰。加入final后,堆内存直接存储的是值,而不是变量名。
(6)匿名内部类
A:是局部内部类的简化形式
B:前提:存在一个类或者接口
C:格式:
new 类名或者接口名() {
重写方法;
}
D:本质:
其实是继承该类或者实现接口的子类匿名对象
(7)匿名内部类在开发中的使用
我们在开发的时候,会看到抽象类,或者接口作为参数。
而这个时候,我们知道实际需要的是一个子类对象。
如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。
interface Person {
public abstract void study();
}
class PersonDemo {
public void method(Person p) {
p.study();
}
}
class PersonTest {
public static void main(String[] args) {
PersonDemo pd = new PersonDemo();
pd.method(new Person() {
public void study() {
System.out.println("好好学习,天天向上");
}
});
}
}
(8)匿名内部类的面试题(补齐代码)
interface Inter {
void show();
}
class Outer {
//补齐代码
public static Inter method() {
return new Inter() {
public void show() {
System.out.println("HelloWorld");
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show(); //"HelloWorld"
}
}
- 3.4.内部类与匿名类
- 匿名类与内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- 匿名类,内部类,匿名内部类
- Java内部类与匿名类
- java的内部类与匿名类
- Java- 内部类与匿名类
- java基础--内部类与匿名类
- 内部类与匿名内部类
- 内部类与匿名内部类
- Java内部类与匿名内部类
- JAVA内部类 与 匿名内部类
- 内部类 匿名内部类与接口
- Java 内部类与匿名内部类
- Java 内部类与匿名内部类
- Java内部类与匿名内部类
- 关于 Java 中 finally 语句块的深度辨析
- POJ2886-Who Gets the Most Candies?-树状数组
- win32api之虚拟键盘
- springmvc 配置多视图(jsp,freemarker,HTML等)
- python常见问题记录
- 3.4.内部类与匿名类
- Hadoop面试
- 4592: [Shoi2015]脑洞治疗仪
- java快速排序优化
- IPV4 ipV6区别
- 421. Maximum XOR of Two Numbers in an Array
- 系统学习深度学习(十)--优化算法
- 跨脚本攻击之反射型xss
- 加入购物车抛物线效果的基本实现(一)