Java教程

java---内部类

本文主要是介绍java---内部类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
  • 内部类的分类:
    • 成员内部类(静态、非静态)
    • 局部内部类(方法内、代码块内、构造器内)
  • 成员内部类
    • 一方面,作为外部类的成员
      • 调用外部类的结构
      • 可以被static修饰
      • 可以被4种不同的权限修饰
    • 另一方面,作为一个类
      • 类内可以定义属性、方法、构造器
      • 可以被final修饰,表示此类不能被继承
      • 可以被abstract修饰
  • 如何实例化成员内部类的对象
  • 如何在成员内部类中区分调用外部类的结构
package exer;

public class InnerClassTest {
	public static void main(String[] args) {
		//创建Dog实例(静态的成员内部类)
		Person.Dog dog=new Person.Dog();
		dog.show();
		
		//创建Bird实例(非静态的成员内部类)
		Person p=new Person();
		Person.Bird bird=p.new Bird();
		bird.sing();
		
		System.out.println();
		
		bird.display("ll");
	}
}
class  Person{
	String name="小明";
	int age;
	
	public void eat(){
		System.out.println("人:吃饭");
	}
	//静态成员内部类
	static class Dog{
		String name;
		int age;
		
		public void show(){
			System.out.println("狗狗狗");
		}
	}
	
	//非静态成员类
	class Bird{
		String name="杜鹃";
		
		public Bird(){
			
		}
		public void sing(){
			System.out.println("鸟鸟鸟");
			//调用外部类的非静态方法
			Person.this.eat();
			eat();
			System.out.println(age);
		}
		public void display(String name){
			//方法的形参
			System.out.println(name);
			//内部类的属性
			System.out.println(this.name);
			//外部类的属性
			System.out.println(Person.this.name);
		}
	}
}
  • 开发中局部内部类的使用
package exer;

public class InnerClassTest1 {
	public Comparable getComparable(){
		class MyComparable implements Comparable{

			@Override
			public int compareTo(Object o) {
				return 0;
			}
			
		}
		return new MyComparable();
	}
}

这篇关于java---内部类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!