JAVA基础课程(第十四天)

JAVA基础课程

第十四天

内部类

(1)Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B就是外部类

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

(3)成员内部类

​ --作为外部类的成员

​ ①调用外部类的结构

​ ②可以被static修饰

​ ③可以被四种修饰符修饰

​ --作为一个类

​ ①类内可以定义属性,方法,构造器等

​ ②可以被final修饰,表示此类不能被继承。不被final修饰可以被继承

​ ③可以被abstract修饰

(4)关注以下三个问题

​ ①如何实例成员内部类对象

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

​ ③开发中局部内部类的使用

package com.test.course.inner;

/**
 * @author PitterWang
 * @create 2020/5/2
 * @since 1.0.0
 */
public class Animal {
	String name;
	public static int age;
	public void eat(){
		System.out.println("动物吃东西");
	}
	public void setName(String name){
		this.name = name;
	}
	/***
	 *静态内部类
	 */
	static class Dog{
		String name;
		public Dog(){
		}
		public void eat(){
			System.out.println("Dog东西");
		}

		public void getWhoName(){

			age = 12;
			//Animal.this.name = "Bird";//无法调用外部类的非静态方法
			//setName("Bird");//无法调用外部类的非静态方法
			this.eat();
		}
	}

	/***
	 * 非静态内部类
	 */
	 class Bird{

	 	String name;
	 	public Bird(){
		}

		public void eat(){
			System.out.println("Bird东西");
		}

		public void getWhoName(){
			setName("Bird");
			Animal.this.name = "Bird";
			Animal.this.eat();
			this.eat();
	 	}
	}
}
package com.test.course.inner;

/**
 * 〈内部类的使用〉
 * @author PitterWang
 * @create 2020/5/2
 * @since 1.0.0
 */
public class InnerClassTest {

	public static void main(String[] args) {
		/**
		 * 实例静态成员内部类
		 */
		Animal.Dog dog = new Animal.Dog();
		dog.getWhoName();

		/***
		 * 实例非静态内部类
		 */
		Animal animal = new Animal();
		Animal.Bird bird = animal.new Bird();
		bird.getWhoName();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值