详解内部类

来源:互联网 发布:电视mac认证状态异常 编辑:程序博客网 时间:2024/06/17 02:45
class 类 {
    //1.属性
     //4.初始化块
     //3.构造函数
      //2.方法

     //5.内部类或枚举
}
其中1,2,3,4以前全部了解过,今天来了解下内部类
一、why\\
1. 如果一个类 只想让另一个类(外部类)使用,可以把这个类定义在外部类的内部,并且用private修饰这个类,这样由于该类使用private修饰,只能在本类中访问..
2.内部类可以方便的访问 外部类的任何成员(例如属性)
内部类常用在事件驱动编程中
二、内部类的分类(按照声明的位置分)
1.成员内部类:定义在类体内、方法外部的内部类,叫做成员内部类
(1)静态内部类
(2)非静态内部类
2.局部内部类(匿名内部类)
定义在方法内部,叫做局部内部类...
三、静态内部类
定义
package com.chapter1.演示内部类.静态内部类;//外部类public class Outer {//静态内部类private static class Inner{public void testInner(){System.out.println("内部类的方法执行");}}}
使用:
(1) 在外部类的内部使用
和以前的使用方式完全一样
(2)在外部类的外部使用
Outer.Inner inner = new Outer.Inner(); 
inner.testInner();
四、非静态内部类
public class Outer {//非静态内部类class Inner {public void testInner() {System.out.println("内部类的方法执行");}}}
使用:
(1) 在外部类的内部使用
和以前一样 直接使用就可以了
(2) 在外部类的外部使用
知识点:非静态内部类对象 有两个指针
五、局部内部类
定义在方法体内的内部类叫做局部内部类
package com.chapter16.演示内部类.局部内部类;//外部类public class Outer {public void test(final String name){//局部内部类//定义class A {public void testAAA(){System.out.println("局部内部类的方法执行");System.out.println(name);//局部内部类中的方法 如果想访问test()方法的局部变量 //该局部变量要使用final修饰  JDK8.0开始 不需要加final}}A a = new A();a.testAAA();}public static void main(String[] args) {Outer outer = new Outer();outer.test("zzy");}}

六、匿名内部类
该类只使用一次的时候,推荐使用匿名内部类...
使用匿名内部类来绑定事件
button.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被单击了!!!");textField.setText("Hello World!!");}});

匿名内部类的语法:
new 抽象类/接口(){//重写抽象类的方法或实现接口的方法}
相当于两步
1.
public class  无名氏 implements ActionListener{
 public void actionPerformed(ActionEvent e) {
    
    System.out.println("按钮被单击了!!!");
    textField.setText("Hello World!!");
 }
  
}

2. new 无名氏();





原创粉丝点击