内部类

来源:互联网 发布:c 获取数据库实例名 编辑:程序博客网 时间:2024/06/05 03:48

内部类,顾名思义是类内部的类

除了静态内部类之外,可以认为内部类对象是属于外部类的对象的,在拥有外部类对象之前是不可能创建内部类对象的。这是因为内部类对象会暗暗的连接到创建它的外部类对象上。【内部类可以访问外部类的虽有成员,包括私有的】内部类可以使继承父类和实现接口的。

内部类分类:

成员内部类

私有内部类

局部内部类

静态内部类

匿名内部类【重点】

下面有例子:

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();
}

这里主要需要掌握匿名内部类,匿名内部类这里主要用于减小内存消耗,简化代码,实现快速功能,

后期在注册监听事件是用的比较多



                                  这里是我对内部类的理解和观点,希望各位博友多多指教!!!!!!!

原创粉丝点击