定义:在类的内部定义的类
优点:能方便的使用外部类的属性
缺点:破坏了类的基本结构
注意:慎用内部类!!!
内部类:
内部类调用源码一:
package com.java18;
public class Demo01 {
private String name = "haohao";
/*
* 在类的内部定义类
* 所以叫内部类
* */
class Inner{
public void show() {
System.out.println("name = " +name);
}
}
public static void main(String[] args) {
Demo01 demo01 = new Demo01(); //先实例化外部类
Demo01.Inner inner = demo01.new Inner(); //在实例化内部类
inner.show(); //内部类函数调用展示
}
}
内部类调用源码二:
package com.java18;
public class Demo01 {
private String name = "haohao";
/*
* 在类的内部定义类
* 所以叫内部类
* */
class Inner{
public void show() {
System.out.println("name = " +name);
}
}
public void show() {
Inner inner = new Inner(); //在show()函数内实例化内部类
inner.show(); //调用内部类下的show()函数!
}
public static void main(String[] args) {
Demo01 demo01 = new Demo01(); //实例化外部类
demo01.show(); //调用外部类下的show()函数
}
}
代码块:
代码块源码一:
package com.java18;
public class Demo02 {
{
System.out.println("我是构造代码块");
}
public Demo02() {
System.out.println("我是构造方法1");
}
public Demo02(int i) {
System.out.println("我是构造方法2");
}
public static void main(String[] args) {
Demo02 demo02 = new Demo02(5);
}
}
//输出为 我是构造代码块 和 我是构造方法2
代码块源码2:
package com.java18;
public class Demo04 {
static {
System.out.println("我是静态代码块");
}
{
System.out.println("我是代码块");
}
public Demo04() {
System.out.println("我构造方法");
}
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
}
}
//输出为 我是静态代码块(类加载的就执行) 和 我是代码块(类初始化的时候就执行) 以及 我构造方法(最后执行)