java 内部类声明 抽象类_Java进阶篇(二)——抽象类、内部类

之前在类和对象中我们说到了类的普通特性,本篇将介绍类的一些高级特性。

一、抽象类

抽象类:抽象类是只声明方法的存在而不去具体实现它的类。抽象类不能被实例化,也就是不能创建其对象。使用abstract关键字定义抽象类,直接上例子。

下面是一个抽象类的定义,在class前直接加上abstract关键字。最后一句“public abstract void voice();”是一个抽象方法,没有实际意义,必须用子类重写。需要注意的是,抽象方法只有方法的声明,而没有方法的实现,与接口类似,但是用abstract关键字修饰的。对于抽象方法前的修饰,不能使用private或static关键字。

abstract class Animal { //定义抽象类

public String animal; //定义颜色成员变量

public Animal() { //定义构造方法

animal="bird";

}public abstract void voice(); //定义抽象方法

}

接下来实现一下抽象方法。方法是在抽象类的子类中通过重写该方法实现抽象方法。

public class Dog extendsAnimal {

@Overridepublic voidvoice() {

System.out.println("woof...");

}

}public class Cat extendsAnimal {

@Overridepublic voidvoice() {

System.out.println("nya...");

}

}

二、内部类

内部类:在一个类中再定义一个类,就将在类中再定义的那个类称为内部类。分为成员内部类、局部内部类以及匿名内部类。比如下方代码就是成员内部类:

public class OuterClass { //外部类

private class InnerClass { //内部类//...

}

}

在内部类中可以直接使用外部类的类成员。

1. 局部内部类与成员内部类

而局部内部类是指在类的方法中定义的内部类,作用范围为整个方法体。这里就不举例了,其实跟成员变量、局部变量是一个道理,区别在于作用范围而已。成员内部类同理。

2. 匿名内部类

匿名内部类大量使用于图形化编程的事件监控器代码中,可以大大简化代码增强可读性。顾名思义就是没有名称的类,可使用默认构造方法来生成匿名内部类的对象。在匿名内部类后需要加分号标识。比如后面在swing编程中,在编写框体时,对鼠标、键盘事件的引入就会用到匿名内部类,写到那里时再提及。

3. 静态内部类

静态内部类为在内部类前添加修饰符static。特点就是不可以使用外部类的非静态成员。

4. 内部类的继承

内部类也可以继承,比如继承ClassA类中的内部类ClassB,写作“extends ClassA.ClassB”。但必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。下面看一个例子。

1 public class Example extends ClassA.ClassB { //继承内部类ClassB

2 publicExample(ClassA a) {3 a.super();4 }5 }6 classClassA {7 classClassB {8 }9 }

以上就是本篇的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值