Java内部类(一)

内部类

在类中定义类

内部类的访问特点:

a.内部类可以直接访问外部类的成员,包括私有

b.外部类要访问内部类的成员,必须创建对象

public class book {
	
	String k = "外部";
	
	book.mybook a = new book.mybook();//外部类名.内部类名 对象名 = new  外部类名.内部类名();

	public void run(){
		 
		System.out.println(k+"i的值是"+a.i);
	}
	
	
	class mybook{
		
		int i = 10 ;
		
	}
}

内部类私有

内部类只希望被外部类中的方法操作,此时只有外部类可以控制

类似于,我的心脏只能由我的身体控制

package java04;

public class book {
	
	 public void printer(){
		 mybook m = new mybook();
		 m.run();
	 }
	 
	
	
	 private class mybook{  //在内部类私有时,只有外部类可以访问,如果其他类想访问,只能在
		 					//外部类提供一个printer方法来访问 其他类调用book的printer来访问内部类方法
		
		int i = 10 ;
		public void run(){
			System.out.println(i);
		}
	}
}

静态成员内部类

访问与程序一中相同

局部内部类:

与局部变量相同,仅在该方法中有效

public  class book {
	
	
	public  void run(){
		
	 class Inner{  //局部内部类,只能在其所在方法中访问
			public void innerrun(){
				System.out.println("我是局部内部类");
			}
		}
	 
		Inner i = new Inner();//这条语句只能在内部类之后出现,否则报错
		i.innerrun(); //外部类只需要创建book对象并调用run方法就可以调用内部类方法
		
	}

	 
	
}


public class booktest {

	public static void main(String[] args) {
		 new book().run();
	}

}

运行结果:

 匿名内部类

内部类的简化写法,因为没有名字,所以只能使用一次

前提:存在一个类或者是接口,这里的类可以是具体类也可以是抽象类

格式 new 类名或接口名(){

重写方法;

}

本质是一个继承了该类或者实现了改接口的子类匿名对象,且只针对重写一个方法时使用

开发中可以把匿名内部类当做一个对象传入

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值