Java中的Package.Import.Class以及跟C++的比较(三)

Java中的Package.Import.Class以及和C++的比较(三)

2个关键字

extends:一般是继承类,java里面不能多重继承

implements:一般是实现接口,因为java里面不能多重继承,所以出现了接口来实现类似多重继承的功能

一个使用例子:

class Son extends Father implements InterfaceA,InterfaceB,InterfaceC

son 类,继承自father类,同时实现3个接口。


抽象类

这个有点类似C++里的包含纯虚函数的类,就是,这样的类不能被实例化,只能被继承

抽象类用abstract修饰。

抽象方法也用abstract修饰,抽象方法没有方法体,这个跟C++里的纯虚函数是类似的,不过这里不用写“=0”。

abstract class A//抽象类
{
       abstract void doSomething();//抽象方法
       public void doOtherthing()//非抽象方法
       {
              int a = 0;
       }
}

抽象类可以有非抽象方法,也可以有自己的数据成员

抽象类一般用于定义一些方法,然后让其他人去实现,就是类似总设计图


内部类

内部类还是比较简单的,就是在类内部定义的类,4种:常规内部类、局部内部类、匿名内部类、静态嵌套内部类。

常规的就是直接在类里面定义的,不能有static成员,可以像使用自己的类一样使用外部类的任何数据

局部的就是在方法内定义的,类似局部变量先声明类,后实例化

匿名内部类就是类的申明和定义一起出现的,比如:A a = new A() { public void f(){int a = 0;} },甚至可以作为函数的参数,这个在Android开发中很常用

静态嵌套内部类与常规的差不多,只是加了static,只能访问外部类的静态成员,不能访问实例成员。


接口类

接口类用interface修饰,其中的方法都是抽象方法,可以用abstract修饰,也可以不用

普通类实现接口类,必须实现其中的所有方法

interface class A//接口类
{
       void doSomething();//抽象方法 可以不用abstract修饰
}

接口类所有方法都是抽象方法,且成员必须是静态不可变的,即final static。

接口类一般是供人选择使用的,类似于程序的插件,你可以选择用哪个插件,或者不用哪个插件。


接口类与抽象类的一些比较

  非抽象方法 数据成员 作用
抽象类 可以有 可以有 类似设计图,设计方法,让别人实现
接口类 不可以有,全是抽象方法 可以有,但必须是静态不可变的 类似程序插件,让人选择是否安装