内部类就是定义在一个类里面的类
1.成员内部类
class Outer{
class Inner{
}
}
创对象的格式 :
格式:外部类名.内部类名 对象名 =外部类对象().new 内部类对象;
范例:Outer.Inner in=new Outer().new Inner();
package com.bingyi;
public class inner {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
System.out.println(oi.num);
oi.show();
}
}
class Outer{
class Inner{
int num = 245;
public void show(){
System.out.println("show-------");
}
}
}
成员访问细节:
1.内部类中,访问外部类成员:直接访问,包括私有
2.外部类中,访问内部类成员:需要创建对象访问
2.静态内部类
有static修饰的成员内部类
class Outer{
static class Inner{
}
}
静态内部类创建对象的格式:
格式:外部类名.内部类名 对象名=new 外部类名.内部类对象();
范例:Out.Inner in=new Out.Inner ();
package com.bingyi;
public class inner {
public static void main(String[] args) {
Outer.Inner oi = new Outer.Inner();
oi.show();
}
}
class Outer{
static class Inner{
public void show(){
System.out.println("show-------");
}
}
}
3.局部内部类
放在方法、代码块、构造器等执行体中
package com.bingyi;
public class inner {
public static void main(String[] args) {
A a = new A();
a.show();
}
}
class A{
public void show() {
class B{
public void method() {
System.out.println("method------");
}
}
B b = new B();
b.method();
}
}
4.匿名内部类
概述:匿名内部类本质是一个特殊的局部内部类(定义在方法内部)
前提:需要存在一个接口或类
格式:
new 类名/接口(){
}
作用:可以让代码变得更加简洁,在定义类的时候对其进行实例化
package com.bingyi;
public class inner {
public static void main(String[] args) {
useInter(new Inter() {
@Override
public void show() {
System.out.println("匿名内部类对象-------");
}
});
}
private static void useInter(Inter inter) {
inter.show();
}
}
interface Inter {
void show();
}