类的内部成员之五:内部类

类的内部成员之五:内部类

可以将一个类的定义放在另一个类的定义内部,这就是内部类。
在 Java 中内部类主要分为成员内部类、局部内部类、匿名内部类、静态内部类

类的内部成员之五:内部类
1、Java中允许一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类

2、内部类的分类:成员内部类(静态、非静态)和局部内部类(方法内、代码块内、构造器内)

3、成员内部类:
3.1一方面,作为外部类的成员
①调用外部类的结构
②可以用static修饰
③可以被四种不同的权限修饰
3.2另一方面,作为一个类
①类的内部可以定义属性、方法、构造器等
②可以用final修饰,表示此类不能被继承,反之,可以被继承
③可以被abstract修饰,不能被实例化,反之,可以被实例化

4、问题
①如何实例化成员内部类的对象

public class InnerClassTest {
	public static void main(String[] args) {
		
		//创建Dog(静态成员内部类)实例化
		Person.Dog dog=new Person.Dog();
		dog.show();
		
		//创建Bird(非静态成员内部类)实例化
		Person p=new Person();
		Brid  bird=p.new Brid();
		bird.sing();
		bird.display();
		p.eat();
		
	}
}
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 Brid{
		String name;
		int age;
		public Brid(){
			
		}
		public void sing(){
			System.out.println("鸟:唱歌");
			Person.this.eat();//调用外部类的非静态属性
		}
		//有重名的情况下
		public void display(){
			System.out.println(name);//方法的形参
			System.out.println(this.name);//内部类的属性
			System.out.println(Person.this.name);//外部类的属性
		}	
	}
}

②如何在成员内部类中区分调用外部类的结构

运行:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值