首页 > 代码库 > 七、类的高级特性

七、类的高级特性

1、抽象类  

  抽象类:只声明方法而不去具体实现。不能被实例化创建对象。

  语法:abstract class 类名{...}

  抽象方法:只有方法的声明,没有方法的实现,需要子类重写。

  语法:abstract <返回值类型> 方法名(参数列表)

2、内部类

(1)成员内部类

  在一个类中使用内部类可以在内部类中直接存取其所在类的私有成员变量及成员方法。  

  内部类的实例一定要绑在外部类的实例上,如果外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上,内部类初始化使用new关键字。

  语法:public class OuterClass{

        private class InnerClass{

      }

    }

  如果在外部类和非静态方法之外实例化内部类对象,需要使用“外部类.内部类”的形式指定该对象的类型。

  实例化内部类对象:外部类.内部类 变量名 = 外部类对象.new 内部类();

           OuteClass.innerClass in = out.new innerClass();

 1 public class TheSameName{
 2     private int x;
 3     private class Inner{
 4         private int x=9;
 5         public void doit(int x){
 6             x++;        //调用的是形参x
 7             this.x++;    //调用内部类的变量x
 8             TheSameName.this.x++;    //调用外部类的变量x
 9         }
10     }
11 }

(2)局部内部类

  在方法中定义的内部类,作用范围只存在于整个方法体内。

(3)匿名内部类

  语法:return new A(){...}

(4)静态内部类

  static修饰,不能使用外部类的非静态成员

  特点:a.创建静态内部类的对象,不需要其外部类的对象。

     b.不能从静态内部类的对象中访问非静态外部类的对象。

3、Class类和反射

(1)访问构造方法:返回Constructor类型的对象或数组

  getConstructors()

(2)访问成员变量:返回Field类型的对象或数组

  getField()

(3)访问方法:返回Method类型的对象或数组

  getMethods()

 

七、类的高级特性