内部类相关:(与主类并列的普通类)、成员内部类、局部内部类、匿名内部类

本文详细介绍了Java中的类类型,包括与主类并列的普通类、成员内部类、局部内部类和匿名内部类。通过示例展示了它们的用法和特点,如成员内部类的访问权限、局部内部类的作用域限制以及匿名内部类的一次性使用场景。
摘要由CSDN通过智能技术生成

从开始有要建立类的作业开始,就发现一个问题:经常建立一个对象后,会出现“未实例化”的错误提醒,在搜过一点代码后敷衍地解决了这个问题。后来发现,自己一直建立的是成员内部类,导致每一次都要先建立一个主类的对象。

1. 与主类并列的普通类

主类,一般就是新建类文件后命名的那个类。而在这个类的外部,我们可以建立一个类,那我们使用主类的成员中的内部类的时候,就可以不用先实例化对象了。
注意:普通类前面不能加public & private & protected修饰

public class MainClass
{
    //属性和方法
}
/*与主类并列的普通类*/
class Otherclass{ }

2. 成员内部类

在主类中定义的类,可以使用public private等修饰。

3. 局部内部类

可以在类的局部位置定义,常见的是在类的方法中定义。
若在方法中定义一个局部内部类,注意以下几点:

  1. 注意该类的作用域。比如在一个类A的方法public void do( )中定义了一个局部内部类B,则在类A中的其它方法将无法使用类B。
  2. 如果需要在方法中使用局部内部类,该局部变量需要设置为final类型。

4. 匿名内部类

当局部内部类只被使用一次时,可以尝试使用匿名内部类。
通常,在匿名内部类定义结束后,需要加分号进行标识,但是这个并不代表内部类的结束,二十代表引用表达式的创建。

例:同时实现了成员内部类、局部内部类、匿名内部类。

public class Lab5_2 {

	/*接口*/
	interface Car
	{
		public void run();  //抽象方法
	}
	
	/*CatTest_1类,实现Car接口*/
	/*成员内部类*/
	class CarTest_1 implements Car
	{
		/*方法*/
		public void run()    //覆盖run方法
		{
			System.out.println("Car 1 run!");
		}
		public void CarRun()   //在该方法中定义一个局部内部类
		{
			/*局部内部类*/
			class CarTest_2    //局部内部类carTest_2
			{
				/*方法*/
				public void CarRunTo()
				{
					System.out.println("Car 2 run!");
				}
			}
			CarTest_2 c=new CarTest_2();
			c.CarRunTo();
			
			/*匿名类:一般继承抽象类和接口*/
			Car anonymity=new Car(){
				public void run()
				{
					System.out.println("Car 3 Run!");
				}	
			};
			anonymity.run();			
		}
			
	}
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Lab5_2 t=new Lab5_2();
		CarTest_1 cc=t.new CarTest_1();
		cc.run();
		cc.CarRun();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值