内部类的概述
A:把类定义在其他类的内部,这个类就被称为内部类。
举例:在类A中定义了一个类B,类B就是内部类。
B:内部类访问特点:
内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
class Outer{
private int num=10;
public void show(){
Inter i=new Inter();//外部类调用内部类的成员,必须创建对象
i.show();
}
//内部类
class Inter{
public void show(){
System.out.println(num);
}
}
}
内部类的位置
A:按照内部类在类中定义的位置不同,可以分为如下两种格式:
成员位置(成员内部类):上面的代码就是成员内部类
局部位置(局部内部类)
B:成员内部类
外界如何创建对象,如下:
外部类名.内部类名 对象名=外部类对象.内部类对象
//外部类
class Outer{
private int num=10;
//内部类
class Inter{
public void show(){
System.out.println("直接访问内部类");
}
}
}
public class neibulei {
public static void main(String[] args) {
//如何直接访问内部类成员:外部类名.内部类名 对象名=外部类对象.内部类对象
Outer.Inter oi=new Outer().new Inter();
oi.show();
}
}
成员内部类的修饰符
private:为了保证数据的安全性;
static:静态内部类访问的外部类数据必须用静态修饰;
练习:
package cn.manman.com;
/*
* 要求是分别输出30,20,10,请填空
*/
class Outer1{
public int num=10;
class Inter1{
public int num=20;
public void show(){
int num=30;
System.out.println(num);
System.out.println(this.num);
System.out.println(new Outer1().num);
System.out.println(Outer1.this.num);//后面两种都可以,推荐使用。
}
}
}
public class InterClassTest {
public static void main(String[] args) {
Outer1.Inter1 oi =new Outer1().new Inter1();
oi.show();
}
}
局部内部类
A:可以直接访问外部类的成员;
B:在局部位置,可以创建内部类对象,通过对象调用内部类的方法,来使用局部内部类功能;
package cn.manman.com;
class Outer2{
private int num=10;
public void method(){
//局部内部类
class Inner{
public void show(){
System.out.println(num);
}
}
Inner i=new Inner();
i.show();
}
}
public class jubuneibulei {
public static void main(String[] args) {
Outer2 o2=new Outer2();
o2.method();
}
}
网友评论