接口:(C++里面没有,相当于一个抽象类):Java里面一个类可以实现(implements)多个接口;
1如果一个类实现了一个接口,接口里面的每一个抽象的方法都要实现。
2Eg
Class A implements name1, name2{}
如果既有继承又有接口:
Class A extends name1 implements name2{}
3
Eg:interface abs//定义接口
{
void setday(int x);
void setmonth(int x);
}
class AA implements abs
{
private int day, month;
public void setday(int x) {
day = x;
}
public void setmonth(int x) {
month = x;
}
}
4
Public接口不能为泛型。
5 接口可以继承接口。且类必须实现接口中所有的方法;
类:(类的定义和c++差不多)
1方法的按值传送(相当于c++里面的参数的内容,)
Java中,当传递的是基本类型时(如int,double,),在函数中都是不能改变参数的值。当参数是一个对象时,方法内可以对参数进行修改。也就是说在传递对象时实质上是传递对象的引用。(C++中有专门的引用,有所不同)。
2方法名重载,与c++差不多(返回类型无法识别)。
3对象的构造和初始化:
a:显式成员初始化:(c++)
EG:
class AA
{
public :
int i = 100;
int j = 200;
}
//注:(Java中,c++中一样)这里的对i,j的简单赋值只是脏值,对构造函数没有用,只对默认的构造和自己写的构造什么事也不做时有用。
4Java的构造(与c++大体上差不多,1,Java没有成员初始化表,Java有super,c++没有,);
a:构造不能为native,abstract,final,
b:没有返回值(这两条差不多)。
c:子类的构造中调父类的构造必须放在子类构造语句的前面。
5 finalize()这个方法属于Object类,相当于c++里面的析构。不需要程序员回收,和写的。
6this引用:super不说了。
继承
1Java只允许单重继承,既一个类只有一个父类。Object类是Java中所有的类的直接或间接父类,处于类层次最高层。继承是不能继承构造方法的。
2Java允许父类对象指向继承类对象。称对象转换。在C++中为引用。
判断此时一个类是引用还是基类用instanceof()函数;
Eg:class AA{} AA a = new AA();
Class BB extends AA{}; BB b = new BB(); a = b;
If(a instance BB) 打印BB;
Else 打印AA //打印BB;
3方法重写;
a. 子类方法不能比父类方法的访问权限更严格。例如父类的move()为public。子类的move()方法不能为private,或protect。
b. 父类的重写方法所抛出的异常不能比原方法多。
内部类:
属性:
1内部类可以使用外部类的类变量,实例对象,
2内部类可以定义为abstract类型。
3类名只能在定义的范围内使用。
4当内部类定义为static时,就升级,不能访问局部范围的数据和变量;但内部类不能定义static成员