Java学习笔记——内部类,代码块

内部类的作用是实现多重继承

内部类特性:
Inner class作为类的成员
1.可以声明为final的
2.和外部类不同,Inner class可声明为private或protected
3.Inner class可以声明为static的,但此时就不能再使用外层类的非static的成员变量

Inner class作为类
可以声明为abstract类,因此可以被其他的内部类继承

内部类主要是解决java不能多重继承的问题

代码块

初始化块:

public class Test{
	{
		System.out.println("");
	}
	static{
		System.out.println("");
	}
}

初始化块的作用:对java对象进行初始化

public class Person {
	String name;
	public Person(){
		this.name="张三";
		System.out.println("执行的是构造方法");
	}
	
	//非静态的代码块
	{
		System.out.println("执行的是非静态代码块");
	}

}

在new Person执行的时候
1.类的属性的默认初始化和显示初始化
2.执行代码块的代码
3.执行构造器的代码

静态代码块:
只能使用静态的属性和方法且只被执行一次

匿名Person类

Person p=new Person(){
			/**
			 * 问题:现在想把name改成李四,但是不想动Person里面的代码
			 * 方法:在匿名内部类中用代码块代替构造方法
			 */
			{
				super.name="李四";
			}
			@Override
			public void test() {
				System.out.println("==========");
			}
		};


		System.out.println(p.name);
		p.test();

运行结果:
李四

这种类没有类名,就不能显示的new的方法创建对象,如果要是还有在构造器中初始化属性就没有办法了,这样情况就要用代码块{}初始化工作了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值