内部类,顾名思义是类内部的类
除了静态内部类之外,可以认为内部类对象是属于外部类的对象的,在拥有外部类对象之前是不可能创建内部类对象的。这是因为内部类对象会暗暗的连接到创建它的外部类对象上。【内部类可以访问外部类的虽有成员,包括私有的】内部类可以使继承父类和实现接口的。
内部类分类:
成员内部类
私有内部类
局部内部类
静态内部类
匿名内部类【重点】
下面有例子:
package demo1;
import java.awt.print.Printable;
public class Outer {
int age=40;
//1.成员内部类
class Inner{
public Inner() {
// TODO Auto-generated constructor stub
}
int age=56;
void print() {
int age=50;
System.out.println("就近原则的局部变量: "+age);
System.out.println("区别内部类的局部变量和成员变量 "
+this.age);
System.out.println("区别内部类成员变量和外部类成员变量:"
+Outer.this.age);;
}
}
// 2.静态内部类
static class StaticInner{
{
int age=30;
System.out.println("静态内部类:"+age);
}
}
// 3.私有内部类
private class PrivateInner{
int age=9;
void print() {
System.out.println("私有内部类: "+age);
}
}
//私有内部类
void show() {
//同类中调用内部类是可以直接调用
PrivateInner pInner=new PrivateInner();
pInner.print();
}
// 4、局部内部类
void jubuClass() {
class Inner{
int age=7;
void print() {
System.out.println("局部内部类"+age);
}
}
new Inner().print();
}
}
package demo1;
import demo1.Outer.StaticInner;
public class InnerDemo {
public static void main(String[] args) {
//1.成员内部类
//内部类对象创建方法1
// Outer outer=new Outer();
// Outer.Inner inner = outer.new Inner();
//内部类对象创建方法2
Outer.Inner inner=new Outer().new Inner();
inner.print();
//2.静态内部类
StaticInner inner1=new Outer.StaticInner();
inner.print();
//3.私有内部类
Outer outer=new Outer();
outer.show();
//4.局部内部类
//注意在局部内部类中对内部类进行实例化
outer.jubuClass();
//4.匿名内部类的使用【重点】
/**
* 匿名内部类使用来简化代码的,减少内存消耗
*
* 匿名内部类的使用前提是 该类是抽象类或接口
*
* 匿名内部类使用格式:
* 抽象类名/接口名 变量名 = new 类名\接口名(){};
* 方法体中需要重写所有的抽象方法
*
* */
USB usb=new USB() {
@Override
public void connect() {
// TODO Auto-generated method stub
System.out.println("链接");
}
};
// 调匿名类的方法
usb.connect();
}
}
interface USB{
void connect();
}
这里主要需要掌握匿名内部类,匿名内部类这里主要用于减小内存消耗,简化代码,实现快速功能,
后期在注册监听事件是用的比较多
这里是我对内部类的理解和观点,希望各位博友多多指教!!!!!!!