java面向对象22_内部类

1.内部类概念

  • 什么是内部类?

    将类写在其它类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类(内置类,嵌套类),其他类也称为外部类。

  • 什么时候使用内部类?

    在描述事物时,若一个事物内部还包含其它可能包含的事物,比如在描述汽车时,汽车中还包含这发动机,这时发动机就可以使用内部类来描述。

  • 内部类的分类有哪些?

​ 内部类分为:成员内部类、局部内部类、匿名内部类和静态内部类。

  • 内部类的编译特点?

    对于一个名为OuterClass的外部类和一个名为InnerClass的内部类,在编译成功后,会出现这样两个class文件:OuterClass.class和OuterClass$InnerClass.class。

  • 内部类的访问特点?

    内部类可以直接访问外部类中的成员,外部类要访问内部类,必须要建立内部类对象。

2.成员内部类

成员内部类,定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问。

  • 定义格式
class 外部类 {
   
	修饰符 class 内部类 {
   
		// 其它代码
	}
}

【示例】成员内部类代码演示

// 外部类
class OuterClass {
   
	// 成员内部类
	public class InnerClass {
   
		// 成员内部类的成员变量
		String name;
	    // 成员内部类的构造方法
		public InnerClass() {
   } // 无参构造方法
		public InnerClass(String name) {
    // 有参构造方法
			this.name = name;
		}		
		// 成员内部类的成员方法
		public void test() {
   
			System.out.println("innerClass test()");
		}
	}
	// 外部类成员方法
	public void show() {
   
		// 实例化成员内部类
		InnerClass in = new InnerClass("小明");
		// 获取成员内内部类的属性
		System.out.println(in.name); // 输出:小明
		// 调用成员内内部类的方法
		in.test();
	}
}
// 测试类
public class InnerClassDemo {
   
	public static void main(String[] args) {
   
		new OuterClass().show();
	}
}
  • 内部类访问方式

外部类名.内部类名 变量名 = new 外部类名(实参列表).new 内部类名(实参列表);

【示例】内部类访问方式代码演示

// 外部类
class OuterClass {
   
	String sex = "娜娜";
	// 成员内部类
	public class InnerClass {
   
		// 成员内部类的成员变量
		String name;
	    // 成员内部类的构造方法
		public InnerClass() {
   } // 无参构造方法
		public InnerClass(String name) {
    // 有参构造方法
			this.name = name;
		}
		// 成员内部类的成员方法
		public void test() {
   
			System.out.println("innerClass test()");
		}
	}
}
// 测试类
public class InnerClassDemo {
   
	public static void main(String[] args) {
   
		/* 
		 * 实例化内部类完整写法
		 * OuterClass outer = new OuterClass();
		 * OuterClass.InnerClass in = outer.new InnerClass();
		 */
		OuterClass.InnerClass in 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值