在c++里,类的继承有public, protected, private三种继承方式。
写法, 如在现有的类A基础上扩展出类B :
class B : public A {
…
};
而java没有这三种继承方式的写法,只有:
class B extends A { //父类成员权限的变化就是相当于C++里的public继承方式
…
}
在c++里,一个类可以有多个父类,即在多个类的基础上扩展出一个新的类.
在java里, 一个类只可以有唯一一个父类.
当父类的构造函数需要传参数时:
/* c++写法 */
class Animal {
public Animal(int age) {
cout << "animal init " << age << endl;
}
};
class Human : public Animal {
public:
Human(int age) : Animal(age) //在子类的构造函数体后加上":"直接调用父类的构造函数并传参数
{
//
}
};
/* java的写法 */
class Animal {
public Animal(int age) {
System.out.println("animal init " + age);
}
}
class Human extends Animal {
public Human(int age) {
super(age); //super(...)就是调用父类的构造函数,而且这一句必须写在构造函数的第一行
}
}
在java里不仅可以调用父类的构造函数,也可以用于指定调用父类的属性成员或函数成员.
写法:
super.父类的属性成员名
super.父类的函数成员名()
在c++里,静态公有成员可以直接用”类名::成员名”的方式来调用.但需注意在静态公有函数成员里不能直接访问属性成员
如:
class Animal {
public:
static void eat() {
//
}
};
则可以:
Animal::eat(); //调用方式
在java里也可以有这样的成员,如:
class Animal {
public static void eat() {
System.out.println("animal eats");
}
}
调用:
Animal.eat() ;