【知识点】Java内部类
1内部类的定义
定义:
一个类可以定义在另外一个类的内部,定义在类内部的类称之为内部类(Inner),其所在的类称之为外部类(Outer);
Inner定义在Outer的内部,通常只服务于Outer,对外不不具备可见性,Inner可以直接调用Outer的成员及方法(包括私有)。
2成员内部类
定义:
成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。
实例:
package com.example.innerclass;
public class Outer1 {
//成员内部类的定义
public class Inner {
public void print(String str) {
System.out .println(str);
}
}
public Inner getInner() {
return new Inner();
}
public static void main(String[] args) {
Outer1 outer1 = new Outer1();
Outer1.Inner inner = outer1.new Inner();
inner.print("Outer1.new");
inner = outer1.getInner();
inner.print("Outer1.get");
}
}
3局部内部类
定义:
局部内部类,是指内部类定义在方法和作用域内
定义在方法里:
package com.example.innerclass;
public class Parcel4 {
public void destionation(String str){
//定义在方法内的内部类
class PDestionation {
private String label;
private PDestionation(String whereTo){
label = whereTo;
}
public void readLabel(){
System.out .println(this.label);
}
}
PDestionation pd = new PDestionation(str);
pd.readLabel();
}
public static void main(String[] args) {
Parcel4 p = new Parcel4();
p.destionation("aaaaa");
}
}
定义在作用域里:
package com.example.innerclass;
public class Parcel5 {
private void internalTracking(boolean b) {
if (b) {
//定义在局部作用域的内部类
class TrackingSlip {
private String id;
TrackingSlip(String s) {
id = s;
}
String getSlip() {
return id;
}
}
TrackingSlip ts = new TrackingSlip("slip");
String s = ts.getSlip();
System.out .println(s);
}
}
public void track() {
internalTracking(true);
}