java内部类与抽象类

来源:互联网 发布:python except as 编辑:程序博客网 时间:2024/05/20 06:29

内部类

定义:

内部类对象保存了一个对外部类对象的引用。
OuterClassName.this代表外部类对象的引用
InnerClassName.this代表内部类对象的引用

class Outer{    int outer_i = 100;    void test(){       Inner in = new Inner();       in.display();}//在外部类中创建内部类对象void funcOuter() {        Inner inner = new Inner();        System.out.println(inner.in);        inner.funcInner();}   class Inner{      void display(){             System.out.println("display: outer_i = " + outer_i);         }      void funcInner() {            System.out.println("ok");         }}}

特点

  • 内部类可以直接访问外部类的成员,反之则不行。
  • 内部类可以声明为private或protected。
  • 内部类成员只有在内部类的范围之类是有效的。

访问内部类对象的两种方法

        //1、创建外部类对象        Outer outer = new Outer();        //在外部类的方法中创建内部类对象        //通过这个内部类对象访问内部方法        outer.funcOuter();        //2、创建外部类对象        Outer outer2 = new Outer();        //通过外部类对象创建内部类对象        Inner inner = outer2.new Inner();        //通过这个inner可以访问内部类对象        inner.funcInner();

static内部类

特点

  • static内部类可以象一个普通外部类一样直接创建该对象。
  • static内部类只能访问外部类中的静态成员或方法。
  • static内部类可以声明static成员,但非static的内部类不可以。
  • 修饰符没有任何限制。
static class InnerStatic {        int num;        static int num3;// static内部类可以申明static成员        void funcInnerStatic() {            // System.out.println(out);//static外部类只能访问静态成员变量            System.out.println(num1);            // funcOuter();//static外部类只能访问静态方法            funcOuterStatic();        }    }

抽象类

定义 :用abstract来修饰一个类

特点

  • 抽象类不能直接运用new创建对象
  • 抽象类的实体中可以有abstract方法,且abstract方法只允许声明,而不允许实现
  • 抽象一个类中包含了abstract方法,则这个类必须声明为abstract类。
  • 抽象类的实现子类必须实现抽象类中所有的abstract方法
0 0
原创粉丝点击