您的位置:首页 > 编程语言 > Java开发

java内部类与抽象类

2016-07-13 20:48 330 查看

内部类

定义:

内部类对象保存了一个对外部类对象的引用。

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方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: