java 类的成员之五 内部类

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/83514872

java 类的成员之五 内部类

1. *类的第五个成员:内部类

  1. 相当于说,我们可以在类的内部再定义类,外面的类:外部类,里面的类:内部类

  2. 内部类的分类:成员内部类(声明在类内部且在方法外的) VS 局部内部类(声明在类的方法里)

  3. 成员内部类:
    3.1是外部类的一个成员:①可以有修饰符(四个)②static final ③可以调用外部类的属性、方法

    3.2具有类的特点:①abstract②还可以在其内部定义属性、方法、构造器

  4. 局部内部类:
    4.1局部内部类的使用

  5. 要点掌握:
    ①如何创建成员内部类的对象(如:如创建Bird类和Dog类的对象)
    ②如何区分调用外部类、内部类的变量(尤其是变量重名的时候)

public class TestInnerClass {
	public static void main(String[] args) {
		//创建静态内部类的对象:可以直接通过外部类调用静态内部类的构造器
		Person.Dog dog = new Person.Dog();
		
//		Person.Bird b = new Person.Bird();
		//创建非静态的内部类的对象:必须先创建外部类的对象,通过外部类对象调用内部类的构造器
		Person p = new Person();
		Person.Bird b = p.new Bird();
		b.info();
		b.setName("黄鹂");
	}
}
class Person{
	String name = "填弟";
	int age;
	//成员内部类非static
	class Bird{
		String name = "杜鹃";
		int id;
		public Bird() {
			
		}
		public void setName(String name) {
			System.out.println(name);//黄鹂
			System.out.println(this.name);//杜鹃
			System.out.println(Person.this.name);//填弟
		}
		public void info() {
			show();
		}
	}
	//成员内部类(静态内部类)
	static  class Dog{
		
	}
	public void show() {
		System.out.println("我是外部类的show方法");
	}
	public void method1() {
		class A{
			
		}
	}
	
}

③局部内部类的使用

/*
 * 关于局部内部类的使用
 */
public class TestInnerClass1 {

}
class OuterClass{
	//局部内部类,如下的使用方式较少
	public void mecthod1() {
		
		class InnerClass{
			
		}
	}
	//方式一:常常使用一个方法,使其放回值为某个类或某个接口的对象,而这个类或接口在方法内创建
	public Comparable getComparable() {
		//1.创建一个实现Comparable接口的类:局部内部类
		class MyComparable implements Comparable{

			@Override
			public int compareTo(Object o) {
				// TODO Auto-generated method stub
				return 0;
			}
			
		}
		//2.返回一个实现类的对象
		return new MyComparable();
	}
	//方式二:实现匿名类对象的创建
	public Comparable getComparable1() {
		//返回一个实现Comparable接口的匿名类对象
		return new Comparable() {

			@Override
			public int compareTo(Object o) {
				// TODO Auto-generated method stub
				return 0;
			}
			
		};
	}
	
}
  1. 注:Thread类有内部类enum State {}表示线程的状态

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/83514872
今日推荐