内部类
来源:互联网 发布:淘宝购物信用怎么提高 编辑:程序博客网 时间:2024/05/22 08:35
内部类
定义:
在一个类中定义另外一个类(内部类可以访问外部类的成员,包括私有!)
分类:
成员内部类:外部成员位置
局部内部类:外部局部位置
访问:
外部类名 .内部类名 对象名 = 外部类对象.内部类对象
Outer.Inner oi = new outer().new inner()
代码:
class Outer3{
private int num =10 ;
//成为位置
//定义一个成员内部类
class Inner3{
public void show(){
System.out.println(num);
}
}
public void method(){
}
}
//测试类
public class InnerClassDemo3 {
public static void main(String[] args) {
//内部类访问其中的成员
//创建对象
// Inner3 i = new Inner3();
// i.show();
// 格式:外部类名.内部类名 对象名 = 外部对象. 内部类对象;
// Outer3.Inner3 oi = new Outer3().Inner3();//错误写法
Outer3.Inner3 oi = new Outer3().new Inner3();
oi.show();
}
}
private int num =10 ;
//成为位置
//定义一个成员内部类
class Inner3{
public void show(){
System.out.println(num);
}
}
public void method(){
}
}
//测试类
public class InnerClassDemo3 {
public static void main(String[] args) {
//内部类访问其中的成员
//创建对象
// Inner3 i = new Inner3();
// i.show();
// 格式:外部类名.内部类名 对象名 = 外部对象. 内部类对象;
// Outer3.Inner3 oi = new Outer3().Inner3();//错误写法
Outer3.Inner3 oi = new Outer3().new Inner3();
oi.show();
}
}
成员内部类:
修饰符:
可有private:保护数据的安全性(间接访问)
可以是静态static:静态只能访问静态
静态访问(可以直接用类名调用):
外部类名.内部类名.对象名
Outer.Inner oi = new.Outer.Inner();
或 Outer.Inner.show();
代码:
class Outer4{
private int num = 10 ;
private static int num2 = 100;
//成员静态的内部类
// 静态的内部类访问的外部类数据,外部累的成员必须是静态的
public static class Inner4{
//非静态方法
public void show(){
// System.out.println(num);
System.out.println(num2);
}
//静态方法
public static void show2(){
// System.out.println(num);
System.out.println(num2);
}
}
}
//测试类
public class InnerClassDemo4 {
@SuppressWarnings("static-access")
public static void main(String[] args) {
//成员静态内部类访问自己成员的方式:
//此时静态成员内部类不能用以下的方式访问本类中的成员
// Outer4.Inner4 oi = new Outer4().new Inner4();
//如何访问自己内部成员
//成员静态内部类访问内部类成员的访问格式:
//外部类名.内部类名 对象名 = new 外部类名.内部类名();
Outer4.Inner4 oi = new Outer4.Inner4();
oi.show();
oi.show2();
//show2()是成员内部类的一个静态方法,还有另一中方式访问:
Outer4.Inner4.show2();
}
}
private int num = 10 ;
private static int num2 = 100;
//成员静态的内部类
// 静态的内部类访问的外部类数据,外部累的成员必须是静态的
public static class Inner4{
//非静态方法
public void show(){
// System.out.println(num);
System.out.println(num2);
}
//静态方法
public static void show2(){
// System.out.println(num);
System.out.println(num2);
}
}
}
//测试类
public class InnerClassDemo4 {
@SuppressWarnings("static-access")
public static void main(String[] args) {
//成员静态内部类访问自己成员的方式:
//此时静态成员内部类不能用以下的方式访问本类中的成员
// Outer4.Inner4 oi = new Outer4().new Inner4();
//如何访问自己内部成员
//成员静态内部类访问内部类成员的访问格式:
//外部类名.内部类名 对象名 = new 外部类名.内部类名();
Outer4.Inner4 oi = new Outer4.Inner4();
oi.show();
oi.show2();
//show2()是成员内部类的一个静态方法,还有另一中方式访问:
Outer4.Inner4.show2();
}
}
局部内部类:
1.可以直接访问外部类的数据
2. 局部内部类访问局部变量,该变量必须是常量
3.在内部类成员方法创建局部内部类对象,直接访问该方法去间接输出内部类中的方法
代码:
class Outer6{
private int num = 20 ;
//外部类成员方法
public void method(){
//局部变量
// int num2 = 20 ;//不正确的
final int num2 = 20 ;//局部变量必须是常量
//局部位置
//局部内部类
class Inner6{
public void show(){
System.out.println(num);//外部类成员变量
System.out.println(num2);//访问这个数据
}
}
//访问show()方法
Inner6 i = new Inner6() ;
i.show();
}
}
public class InnerClassDemo5 {
public static void main(String[] args) {
//创建外部类对象
Outer6 o = new Outer6() ;
o.method();
}
}
private int num = 20 ;
//外部类成员方法
public void method(){
//局部变量
// int num2 = 20 ;//不正确的
final int num2 = 20 ;//局部变量必须是常量
//局部位置
//局部内部类
class Inner6{
public void show(){
System.out.println(num);//外部类成员变量
System.out.println(num2);//访问这个数据
}
}
//访问show()方法
Inner6 i = new Inner6() ;
i.show();
}
}
public class InnerClassDemo5 {
public static void main(String[] args) {
//创建外部类对象
Outer6 o = new Outer6() ;
o.method();
}
}
阅读全文
0 0