Java学习笔记五(内部类 ) - zxjay - 博客园
    Wednesday, March 15, 2017
    1:36 PM
    Java学习笔记五(内部类
    1 内部类的优缺点
      在一个类的内部还存在另外一个类,则成为内部类。内部类可以是public 或者private,对其访问的控制与类的成员变量和 成员方法相同。
      内部类的缺点:内部类其实严重破坏了良好的代码结构
      内部类的优点:方便的访问外部类中的私有属性;将内部类拿到外部之后,代码会增加,复杂度也会增加;
    2 基本的内部类结构
    复制代码
    class Outer{
    private String info = “Hello outer inner class”;
    class Inner{
    public void print(){
    System.out.println(info);
    }
    }
    public void fun(){
    System.out.println(“Outer class fun”);
    new Inner().print();
    }
    }
    public class InnerDemo {
    public static void main(String [] args){
    //定义内部类
    Outer.Inner in = null;
    in =new Outer().new Inner();
    in.print();
    new Outer().fun();
    new Outer().new Inner().print();
    }
    }
    复制代码
    特点分析:定义内部类的时候必须指定所属的外部类;必须先实例化外部类,才能实例化内部类;
    3 static 声明的内部类
    复制代码
    class Outer{
    private static String info = “Hello outer class”;
    static class Inner{
    public void print(){
    System.out.println(info);
    }
    };
    public void fun(){
    new Inner().print();
    }
    }
    public class InnerDemo{
    public static void main(String []args){
    //定义方式
    Outer.Inner in = null;
    // in = new Outer().new Inner();// 错误的方式
    in = new Outer.Inner();
    in.print();
    new Outer.Inner().print();
    }
    }
    复制代码
    特点分析:可以直接通过外部类.内部类直接访问,具有一定的局限性,内部类只能访问外部类的静态数据成员。
    4私有内部类
    复制代码
    class Outer{
    private String info = “Hello outer class”;
    private class Inner{
    public void print(){
    System.out.println(info);
    }
    };
    public void fun(){
    new Inner().print();
    }
    }
    public class InnerDemo{
    public static void main(String []args){
    /定义方式错误
    Outer.Inner in = null;
    in = new Outer().Inner();
    in.print();
    /
    new Outer().fun();
    }
    }
    复制代码
    特点分析:如果一个内部类只希望被外部类进行访问,可以使用private来声明内部类;必须在外部类中生成内部类进行操作,不能使用new Outer().new Inner()进行定义。
    5 在类的方法中定义的内部类
    复制代码
    class Outer{
    private String info = “Hello outer class”;
    //无参数的方法
    public void fun(){
    class Inner1{
    public void print(){
    System.out.println(info);
    }
    }
    new Inner1().print();
    }
    //有参数的方法
    public void fun(final String str){
    class Inner2{
    public void print(){
    System.out.println(info);
    System.out.println(str);
    }
    }
    new Inner2().print();
    }
    };
    public class InnerDemo{
    public static void main(String []args){
    new Outer().fun();
    new Outer().fun(“zhang”);
    }
    }
    复制代码
    特点分析:在外部类的方法中生成一个内部类去调用内部类中的方法;如果外部类的方法中需要传递参数,参数的类型必须为final。
    分类: Java
    标签: Java 基础语法 面向对象 内部类
    好文要顶 关注我 收藏该文
    Java学习笔记五(内部类 ) - zxjay - 博客园 - 图9
    计算机生成了可选文字:
    计算机生成了可选文字:
    zxjay
    关注 - 2
    粉丝 - 3
    +加关注
    0
    0
    « 上一篇:Java学习笔记四(代码块 )
    posted @ 2014-11-26 21:15 zxjay 阅读(453) 评论(0) 编辑 收藏
    已使用 Microsoft OneNote 2016 创建。