java编程思想(七)总结

来源:互联网 发布:java b2b2c 开源 编辑:程序博客网 时间:2024/04/24 16:42

第八章 接口与内部类

8.1 接口

interface可以看作是完全抽象类,不存在实例,而仅包含方法声明和常量

例:

public interface A{

int C=122333;  //默认是static final型,不是接口的一部分,仅被存储在该接口的静态存储区

int test();

}

implements实现多继承,接口与接口通过,隔开

 

8.2 内部类

所谓内部类简单的理解就是在一个类的内部定义另外一个类,当向上转型时,内部类对于其他人是完全不可见的且不可用

典型的情况是外部类中存在一个方法返回内部类的实例对象

当需要访问内部类时需满足OuterClassName.InnerClassName

1.定义在方法中的内部类:

例:public class Parcel4{

public Destination dest(String s){

class PDestination implements Destination{

....

}

return new PDestination(s);

}

}

PDestination只属于dest(),因此作用域为dest()

 

2.定义在作用域内的类

例:public Destination dest(String s){

private void internalTracking(boolean b){

if(b){

class  TrackingSlip{  //无论如何都会被编译,而在作用域外不可用

....

}

TrackingSlip ts=new TrackingSlip();

}

}

}

 

3.匿名内部类

例:

public class Parcel4{

public Destination dest(String s){

return new Destination (s){

....

};   //创建了继承于Destination的匿名内部类对象

}

}

 

public class Parcel4{

public Destination dest(final String dest,final float price){

return new Destination (){

private float cost;

private String label;

{  //相当于构造器,对属性初始化,不能重载

cost=float;

label=dest;

}

....

};   //创建了继承于Destination的匿名内部类对象

}

}

如果定义一个匿名内部类,并希望它使用一个在其外部定义的对象,编译器要求其参数引用是final

 

4.链接到外部类

内部类能访问其外部类的全部成员,构建内部类的对象时需要一个指向其外部类的引用this

 

5.嵌套类

如果不需要内部类对象与其外部类对象之间有联系,可以将内部类声明为static,即为嵌套类

要创建嵌套类对象并不需要外部类对象,不能从嵌套类的对象中访问非静态的外部类对象

嵌套类中可包含static成员

 

6.引用外部类的对象

例:P p=new P();

P.C c=p.new Contents();  //p为外部类的实例对象,利用p可以得到内部类的实例对象

 

7.从多层嵌套类中访问外部类的成员

无论被嵌套多少层,其均能透明访问所有嵌入的外部类的成员

 

8.内部类的继承

例:

public class Inher extends With.Inner{  //WithInner的外部类,继承内部类

Inher(With w){

w.super();//必须在构造器中使用w.super()操作来指明其关系

}

}  

9.内部类可以被覆盖

class Eggs{

protect class York{

public void f(){.....}

}

class BigEggs extends Eggs{

class York extends Eggs.York{

public void f(){xxxxxx};//覆盖方法

}

}

}

 

10.局部内部类

局部内部类不能有访问说明符,当需要不止一个内部类实例对象时使用局部内部类,否则匿名内部类。

 

11.内部类标识符

LocalInnerClass$2.class  //2标识其匿名内部类

LocalInnerClass$Inner.class //Inner为内部类

 

 

 

 

 


0 0
原创粉丝点击