JavaSE——面向对象:内部类

内部类:定义在一个类内部的类,也称嵌套类。java

 

实例内部类:测试

实例内部类程序示例:this

import mypro01.Outter.Inner;

class Outter{	//外部类
	int age=2;
	String sex="mail";
	public void doWorkOut(){
		System.out.println("我是外部类方法");
	}
	
	class Inner{	//内部类
		
		int age=12;
		String name;
		public void doWorkIn(){	//内部类方法
			doWorkOut(); 	//内部类可直接访问外部类方法
			
			//内部类访问外部类同名和不一样名成员的方法
			System.out.println("内部类可直接访问外部类成员"+sex);
			System.out.println("内部类可访问外部类同名成员age :"+Outter.this.age); 	
			System.out.println("内部类的age和name: "+this.age+" "+this.name);
		}
	}
}
public class InnerClass {

	public static void main(String[] args) {

		System.out.println("**************外部类对象测试*****************");
		Outter out1= new Outter();
		System.out.println(out1.age);
		System.out.println(new Outter().age);
		
		System.out.println("**************内部类对象测试*****************");
		Inner in1= new Outter().new Inner();	//内部类定义方法
		Inner in2=out1.new Inner();				//内部类定义方法
		System.out.println(in1.name);
		System.out.println(in2.name);
		System.out.println(in2.age);
		
		System.out.println("**************内部类方法测试*****************");
		in1.doWorkIn();
		
	}

}

实例内部类程序示例运行结果:code

**************外部类对象测试*****************
2
2
**************内部类对象测试*****************
null
null
12
**************内部类方法测试*****************
我是外部类方法
内部类可直接访问外部类成员mail
内部类可访问外部类同名成员age :2
内部类的age和name: 12 null

静态内部类对象

静态内部类程序示例:class

import mypro01.Outter.Inner;

class Outter{	//外部类
	int age=2;
	static String sex="mail";
	public void doWorkOut(){
		System.out.println("我是外部类非静态方法");
	}
	
	static public void doWorkOut2(){
		
		System.out.println("我是外部类静态方法");
	}
	
	static class Inner{	//内部类
		
		int age=12;
		String name;
		public void doWorkIn(){	//内部类方法
			
			//静态内部类可直接访问外部类静态成员(字段和方法),但没法直接访问外部类非静态成员。
			System.out.println("静态内部类可直接访问外部类静态成员"+sex);
			doWorkOut2();
			
			//静态内部类访问外部类非静态成员(字段和方法)时,需经过外部类实例去访问。
			System.out.println("静态内部类访问外部类非静态成员age :"+new Outter().age); 	
			new Outter().doWorkOut(); 	
			
			System.out.println("内部类的age和name: "+this.age+" "+this.name);
		}
	}
}
public class InnerClass {

	public static void main(String[] args) {

		System.out.println("**************外部类对象测试*****************");
		Outter out1= new Outter();
		System.out.println(out1.age);
		System.out.println(new Outter().age);
		
		System.out.println("**************内部类对象测试*****************");
		Inner in1= new Inner();	//静态内部类在建立实例时,没必要建立外部类实例
		Outter.Inner in2= new Outter.Inner();
		System.out.println(in1.name);
		System.out.println(in2.name);
		System.out.println(in2.age);
		
		System.out.println("**************内部类方法测试*****************");
		in1.doWorkIn();
		
	}

}

静态内部类程序运行示例:import

**************外部类对象测试*****************
2
2
**************内部类对象测试*****************
null
null
12
**************内部类方法测试*****************
静态内部类可直接访问外部类静态成员mail
我是外部类静态方法
静态内部类访问外部类非静态成员age :2
我是外部类非静态方法
内部类的age和name: 12 null

局部内部类(注意区别局部内部类和成员内部类)程序

  • 局部内部类属于方法中的类。
  • 成员内部类是属于类中的类。

局部内部类程序示例:方法

局部内部类程序示例运行结果:im

匿名内部类

 

匿名内部类程序示例:

匿名内部类程序运行结果:

相关文章
相关标签/搜索