/**
* 标题:Java内部类[成员内部类、局部内部类、匿名内部类和静态内部类]
* * 作者:Nstar
* * 时间:2020年3月13日
* * 内容:
* * 问:什么是内部类?
* 答:在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。
*/
public class Test13 { //测试类,用于测试案例
public static void main(String[] args) {
Test_A ts= new Test_A(); //成员内部类实现 ,首先new一个外部类得对象,
Test_A.Test_B ab = ts.new Test_B(); //得到外部类对象之后可以通过外部类对象创建内部类对象,
//因为内部类得形成时依赖于外部类。
ab.spek(); //通过对象调用方法
Test_E.Test_F ts_f= new Test_E.Test_F(); //此案例得实现是基于内部静态类实现得
//因为内部类使用static关键字修饰,所以它的对象创建不需要依赖于外部类
ts_f.print_f(); //通过对象调用方法
Myintface mi = new Myintface(){ //内部匿名类实现,
// 语法:new 接口名/类名()
// {
// 匿名内部类的类体
// }
@Override // Java注解,不写也可以
public void fun(){ //重写接口中的fun抽象方法
System.out.println("匿名内部类");
}
}; //千万不要忘掉分号,因为创建的匿名内部类是一个语句
mi.fun(); //通过对象调用匿名内部类的方法
}
}
class Test_A{ // [成员内部类案例]
// Test_A类属于Test_B类的外部类,如果Test_A类去访问Test_B的成员或方法,必须先创建一个成员内部类的对象
class Test_B{ //Test_A类的内部成员类
// 此类可以无条件访问Test_A类的方法和成员包括private修饰的方法和成员
void spek(){ //内部类Test_B的方法
System.out.println("成员内部类,Test_B类的方法!");
}
}
}
class Test_C{ //[局部内部类案例]
void test_c(){ //类Test_C的方法
class Test_D{ //Test_D属于局部内部类 ,访问权限仅限于test_c方法中
//局部内部类就像是方法里面的一个局部变量一样,是不能有 public、protected、private 以及 static 修饰符的。
void test_d1(){ //局部内部类的方法
System.out.println("Test_D类的方法!");
}
}
}
}
class Test_E{ //[静态内部类案例]
static class Test_F{ //因为被static修饰后,创建它的对象时不需要依赖于Test_E类,创建对象时不需要先new一个Test_E类的对象
void print_f(){
System.out.println("Test_F静态内部类的方法");
}
}
}
interface Myintface{
void fun(); //记住,Java规定,接口中除了默认方法和静态方法,其它方法全抽象
}
Java内部类[成员内部类、局部内部类、匿名内部类和静态内部类],代码讲解
最新推荐文章于 2022-08-08 11:21:51 发布