Java基础第15讲:嵌套类和内部类

一、什么是嵌套类

嵌套类分为两种类型:静态嵌套类和非静态嵌套类。平常我们使用的最多的是非静态嵌套类,也就是被称为内部类,其中内部类又可以分为三种:

  1. 在一个类(外部类)中直接定义的内部类
  2. 在一个方法(外部类的方法)中定义的内部类
  3. 匿名内部类

二、在外部类中定义内部类

对于内部类,通常在定义类的class关键字前,不加public或private等修饰词。内部类的成员只在内部类可见,若外部类或同层次的内部类需要访问,需要创建类的对象,不可以直接访问内部类的变量

public class Test2{  
	String name="galen";   
	class InnerOne{  
		public int a=1;
		private int b=2;  
		int c=3;  
		public void display(){  
			System.out.println("name:" +name);  
		} 
	}   
	void test(){  
		InnerOne ino = new InnerOne(); 
		ino.display();  
		//System.out.println("InnerOne a:"+a);		
		//在外层类中的某个方法里面不能直接访问内部内变量  ,必须通过对象来访问
		System.out.println("InnerOne a:"+ino.a);	//可以访问  
		System.out.println("InnerOne b:"+ino.b);	//可以访问  
		System.out.println("InnerOne c:"+ino.c);	//可以访问   
		InnerTwo it = new InnerTwo();  
		it.transfer();  
	}   
	class InnerTwo{  
		InnerOne ino = new InnerOne();  
		public void transfer(){  
			//System.out.println(a);	//不可访问Innter的y成员  
			//System.out.println(InnerOne.a);//不可直接访问Inner的任何成                                                                   员和方法  
			ino.display();		        //可以访问  
			System.out.println("sum="+(ino.a+ino.b+ino.c));	//可以访问  
		}  
	}   
	public static void main(String args[]){  
		Test2 ot = new Test2();  
		ot.test();  
	} 
}

三、在方法中定义内部类

定义在方法中的内部类的可见性更小,它只在方法内部可见,在外部类及外部类的其它方法中都不可见。同时,它有一个特点,就是方法中的内部类连本方法的成员变量都不可访问,它只能访问本方法的final型成员。同时另一个需要引起注意的是,在方法中定义成员时,只允许使用final修饰词或不加修饰词

四、匿名内部类

匿名内部类通常用在java的事件处理上,比如,在后续我们将学的窗体程序中,使用匿名内部类将很有用。

public abstract class Eat {

	//能吃饭
	public void eatable();
}
public class Person {

	public void feed(Eat e){
		e.eatable();
	}
}
public class Test2{
	
	public static void main(String[] args) {
		Person mary = new Person();
		mary.feed(new Eat() {
			
			@Override
			public void eatable() {
				System.out.println("汉堡包");
			}
			
		});
	}
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值