JAVA——面向对象——内部类

Posted 叶不修233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——面向对象——内部类相关的知识,希望对你有一定的参考价值。

JAVA——面向对象——内部类

一、内部类的分类

内部类的种类:成员内部类、静态内部类、局部内部类、匿名内部类

二、内部类-匿名内部类(重点)

应用场景:某个类或者某个类对象只应用一次,就可以使用匿名内部类,不必去先创建具体的类继承父类或者实现接口,再创建对象。
匿名内部类能够使你的代码更加简洁。
语法:

父类名(接口名) 对象名 = new 父类名(接口名)
	重写的方法;
 

举例:
接口Animal,具有play()方法

/**
 * 新建一个接口Animal
 * @author z
 *
 */
public interface Animal 
	void play();

想实现Animal子类对象实例化,又不想新建一个子类,可以使用匿名内部类

public class Test 

	public static void main(String[] args) 
		
		//非匿名常规方法
		//1.新建一个Java文件-为Animal类创建子类Cat
		//2.新建一个Java文件-在main方法中实例化子类Cat的对象cat
		
		//匿名内部类
		//在main方法中创建Animal类的匿名子类,同时实例化子类的对象cat
		
		//匿名子类1,实例化子类的对象cat
		Animal cat = new Animal() 

			@Override
			public void play() 
				System.out.println("猫吃鱼");
				
			
			
		;
		//匿名子类2,实例化子类的对象dog
		Animal dog = new Animal() 

			@Override
			public void play() 
				System.out.println("狗吃肉");			
			
			
		;
		//匿名子类3,实例化子类的对象ultraman
		Animal ultraman = new Animal() 

			@Override
			public void play() 
				System.out.println("奥特曼打小怪兽");
				
			
			
		;
		//调用这些匿名子类对象的play方法
		cat.play();
		dog.play();
		ultraman.play();
	

三、内部类-成员内部类、局部内部类(了解)

成员内部类:类里再写类
局部内部类:方法里写类

举例:
创建类

public class Teacher 
	/**
	 * 成员内部类
	 * 在类Teacher里创建成员内部类Student
	 * @author z
	 *
	 */
	public class Student
		public void study() 
			System.out.println("学习");
		
	
	
	public void teach() 
		/**
		 * 局部内部类
		 * 在方法teach里创建类Son
		 * 方法里创建的类不能用public修饰,因为只能在该方法中被调用
		 * @author z
		 *
		 */
		class Son 
			public void play() 
				System.out.println("玩耍");
			
		
		Son son = new Son();
		son.play();
	

实例化对象

public class Test 

	public static void main(String[] args) 
		//创建成员内部类对象
		Student stu = new Teacher().new Student();
		stu.study();
		
		//调用局部内部类
		Teacher t = new Teacher();
		t.teach();
	


以上是关于JAVA——面向对象——内部类的主要内容,如果未能解决你的问题,请参考以下文章

java面向对象(上)--内部类

java 面向对象内部类和接口

Java 面向对象 --匿名内部类

Java面向对象(17)_内部类

java面向对象--内部类

Java面向对象 —— 抽象类接口内部类匿名内部类