码迷,mamicode.com
首页 > 其他好文 > 详细

内部类

时间:2019-03-31 13:57:47      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:display   匿名内部类   局部变量   参数传递   info   简介   ==   family   本质   

内部类简介

将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。

什么时候使用内部类

在描述事物时,若一个事物内部还包含其他可能包含的事物。

内部类的分类

内部类分为成员内部类与局部内部类。

我们定义内部类时,就是一个正常定义类的过程,同样包含各种修饰符、继承与实现关系等。在内部类中可以直接访问外部类的所有成员。

成员内部类

成员内部类,定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问

定义格式

class 外部类 {

修饰符 class 内部类 {

//其他代码

     }

}

访问方式

外部类名.内部类名 变量名 = new 外部类名().new 内部类名();

public static void main(String[] args) {
    //创建内部类对象
    Body.Heart bh = new Body().new Heart();
    //调用内部类中的方法
    bh.jump();
}
技术图片

局部内部类

局部内部类,定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问

定义格式

class 外部类 {

修饰符 返回值类型 方法名(参数) {

class 内部类 {

//其他代码

          }

     }

}

访问方式

在外部类方法中,创建内部类对象,进行访问

定义类
class Party {//外部类,聚会
    public void puffBall(){// 吹气球方法
        class Ball {// 内部类,气球
                   public void puff(){
     System.out.println("气球膨胀了");
      }
}
//创建内部类对象,调用puff方法
new Ball().puff();
     }
}

//访问内部类
public static void main(String[] args) {
    //创建外部类对象
    Party p = new Party();
    //调用外部类中的puffBall方法
    p.puffBall();
}

匿名内部类

匿名内部类的本质是一个带具体实现的父类或者父接口的匿名子类对象。

前提:

匿名内部类必须继承一个父类或者实现一个父接口

格式:

new 父类名或者接口名(){

      //方法重写

}

package day02;

// 抽象类
abstract class Demo {
    //抽象方法
    abstract void fly();


}

// 继承实现了抽象列
class Demo1 extends Demo {
    void fly() {
        System.out.println("我飞了");
    }
}

public class Test {
    public static void main(String[] args) {
        //匿名内部类当做参数传递
        run(new Demo1() {
            void fly() {
                System.out.println("我飞了");
            }

        });


    }

    private static void run(Demo d) {
        d.fly();
    }

}

技术图片

 

技术图片

内部类

标签:display   匿名内部类   局部变量   参数传递   info   简介   ==   family   本质   

原文地址:https://www.cnblogs.com/wurengen/p/10630978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!