内部类和匿名类(课堂笔记)


前言

内部类:写在一个类里面的类
1. 普通的内部类
1)可以访问外部类的所有变量和方法
2) 内部里面不能有类变量和类方法
3) 内部类在外部不能直接访问

2. 静态内部类
3. 局部内部类
4. 匿名内部类


提示:以下是本篇文章正文内容,下面案例可供参考

一、普通内部类

内部类:写在一个类里面的类
1. 普通的内部类
1)可以访问外部类的所有变量和方法
2) 内部里面不能有类变量和类方法
3) 内部类在外部不能直接访问

package chapter08;

public class Example01 {
	int a;
	void a(){
	}
	
	class A{//内部类
		int b = a;
		void b(){
			a();
		}
	}
	
	public static void main(String[] args) {
		Example01 e = new Example01();
		A a = e.new A();
		a.b();
		
		class User{
			void say(){
				System.out.println("----------------");
			}
		}
		
		User user = new User();
		user.say();
	}
}


/*  11698008@qq.com
 * 内部类:
 * 		写在一个类里面的类
 * 		1. 普通的内部类
 * 			1)可以访问外部类的所有变量和方法
 * 			2) 内部里面不能有类变量和类方法
 * 			3) 内部类在外部不能直接访问
 * 		2. 静态内部类
 * 		3. 局部内部类
 * 		4. 匿名内部类
 */

二、静态内部类

1.静态内部类里面不能访问外部类的非静态变量和方法

代码如下(示例):

package chapter08;

public class Example02 {
	
	public static class A{
		void a(){
			System.out.println("-------------");
		}
	}
	
	public static void main(String[] args) {
		A a = new Example02.A();
	}
}
/*
 * 静态内部类里面不能访问外部类的非静态变量和方法
 */

三、匿名内部类

1.除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。匿名类就是一个子类
2.由于匿名类是一个子类,但没有类名,所有在用匿名类创建对象时,要直接使用父类的构造方法

package chapter08;

public class Example04 {
	public void click(OnClick onClick){
		onClick.doClick();
	}
	
	public static void main(String[] args) {
		Example04 e = new Example04();
		e.click(new OnClick() {
			
			@Override
			public void doClick() {
				System.out.println("不要点击我");
			}
		});
	}
}

interface OnClick{
	public void doClick();
}

package chapter08;

public class Example03 {
	public static void main(String[] args) {
		User user = new User(){
			@Override
			void say() {
				super.say();
				System.out.println("吃饭了吗");
			}
		};
		
		User u = new MyUser();
		user.say();
	}
}

class User{
	void say(){
		System.out.println("hello");
	}
}

class MyUser extends User{
	@Override
	void say() {
		super.say();
		System.out.println("吃饭了吗");
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值