社区首页 / 我要学java / 帖子详情

【知识点】Java内部类

发表于:2017-06-19 12:11 [ 只看楼主] 5841 0 0

1内部类的定义

定义:

一个类可以定义在另外一个类的内部,定义在类内部的类称之为内部类(Inner),其所在的类称之为外部类(Outer);

Inner定义在Outer的内部,通常只服务于Outer,对外不不具备可见性,Inner可以直接调用Outer的成员及方法(包括私有)。

2成员内部类

定义:

成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。


实例:

package com.example.innerclass;

public class Outer1 {


//成员内部类的定义

    public class Inner {

        public void print(String str) {

            System.out .println(str);

        }

    }

       

     public Inner getInner() {

      return new Inner();

     }

   

    public static void main(String[] args) {

     Outer1 outer1 = new Outer1();

     Outer1.Inner inner = outer1.new Inner();

        inner.print("Outer1.new");


        inner = outer1.getInner();

        inner.print("Outer1.get");

    }

    

}

3局部内部类

定义:

局部内部类,是指内部类定义在方法和作用域内

定义在方法里:

package com.example.innerclass;

public class Parcel4 {


    public void destionation(String str){

//定义在方法内的内部类

        class PDestionation {

            private String label;

            private PDestionation(String whereTo){

                label = whereTo;

            }

           

            public void readLabel(){

               System.out .println(this.label);

            }

        }

        PDestionation pd = new PDestionation(str);

        pd.readLabel();

       

    }

   

    public static void main(String[] args) {

        Parcel4 p = new Parcel4();

        p.destionation("aaaaa");

    }

}

定义在作用域里:

package com.example.innerclass;

public class Parcel5 {

    private void internalTracking(boolean b) {

        if (b) {

//定义在局部作用域的内部类

            class TrackingSlip {

                private String id;

                TrackingSlip(String s) {

                    id = s;

                }

                String getSlip() {

                    return id;

                }

            }

            TrackingSlip ts = new TrackingSlip("slip");

            String s = ts.getSlip();

            System.out .println(s);

        }

    }


    public void track() {

        internalTracking(true);

    }


  • 点赞  0
  • 收藏
  • 扫一扫分享朋友圈

    二维码

  • 分享

全部回复 (0) 倒向排序

课程推荐

社区热门帖