java学习笔记之内部类

内部类:
顾名思义就是在一个类里面重新再写一个类
内部类有:成员内部类、局部内部类、匿名内部类
成员内部类:
外部类创建内部类实例的时候与其他类创建对象引用时相同。内部类可以访问他的外部类成员,内部类的成员只能在内部类范围内是可见的

举个栗子:

public class Animal {
	private int age;
	private String name;
	private int x;
	Sheep sheep = new Sheep();  //内部类在类中实例化方法
	public void eat(){
		//sheep.eat();
		sheep.kind = "iii";
		age = 10;
		name= "zhuazhua";
		System.out.println("Animal:"+"age="+age+"name="+name);
		System.out.println(sheep.kind);
	}
	class Sheep{    // 成员内部类
		String kind="o";
		int x =0;
		public void eat(){ 
			age = 11;
			name = "angle";
			System.out.println("Sheep:"+"age="+age+"name="+name);
		}
		public void sleep(){
			kind = "ooo";
		}
		public Sheep shout(){
			x = 3;
			sheep.x = 4;
			kind = "oo";
			return sheep;
			
		}
		public void add(int x){
			x++;      //形参x
			this.x++;   // 内部类变量
			Animal.this.x++;  // 外部类变量
		}
	}
	public static void main(String[] args) {
		Animal animal = new Animal();
		animal.eat();
		// Sheep sh = new Sheep();   在main方法中不能这样实例化内部类
		Animal.Sheep sh =  animal.new Sheep();  //
		sh.eat();
	}
}

局部内部类:

类方法中的定义的内部类,他的作用范围就是该方法体

在方法外部不能访问该内部类
同样还是上栗子:

public class Sell {
	private String name;
	public Sell(){
		name = "apple";
	}
	public void sell(int price){
		class Apple{
			int price =0;

			public Apple(int price) {
				this.price = price;		
			}
			public void Price(){
				System.out.println("sell:"+name);
				System.out.println("price="+price);
			}
		}
		Apple apple = new Apple(price);
		apple.Price();
	}
	public static void main(String[] args) {
		Sell se = new Sell();
		se.sell(12);
	}
}
匿名内部类:

内部类不一定要给它一个名字,可以直接由对象名来代替,所以就有了匿名内部类,匿名内部类的所有代码需要在大括号里实现;
直接new就可以了

学习内部类的一些心得

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值