1、为什么会出现子类(sub class),父类(super class)的概念?他们出现解决了什么问题?
2、如何定义一个类的字类?定义的格式是什么?
extends:关键字,用来定义子类。
//c++ 用冒号
class 子类名 extends 父类名 {
父类基础上,子类特有东西
}
父类必须提前存在
3、什么是单重继承? 直接父类只能有一个,间接父类可以有很多个。
4、java所有类有什么性质? 所有类形成一个倒立树状层次结构,因为java只允许单重继承,这就一个类至多只有一个父类,可以有多个子类,符合树的一对多的性质,所以形成了树状结构。
5、所有类都有父类吗或者间接父类吗? 是的,树根是object类(java.lang.object
),即object类是所有类的祖先类,因此除了object类,每个类仅有一个直接父类。
6、什么时候这个类被认为是object类的子类? 如果类的声明中没有使用extends
关键字 ,那么就被认为是object的(直接子类)子类
7、创建子类对象的时候,是首先为子类对象内特有的成员变量分配内存吗? 不是的,首先为父类的(回溯到object类)成员变量分配内存,然后依次下来分配内存。
8、子类的构造方法有什么要求? 子类构造方法的第一句首先要调用父类的相应构造方法,并且不能直呼其名,要用super
;这同时也可以用7的原因来解释,因为首先要为父类的成员变量分配内存,然后才为子类的成员变量分配内存,所以要先调用父类的构造方法,再为子类分配内存。
class Person {
int n;
Person (int n) {
身份证号n;
}
}
class Student extends Person {
int m;
Student (int n, int m) {
super (n);
学号m;
}
}
9、instanceof
运算符是什么?用来解决什么问题? instanceof
是双目运算符,用来判断左边的对象是不是右边类的对象。
格式 x instanceof T 值:true,| false
左边的x,对象,右边T是类,表示左边x是右边T的对象吗?如果是,则返回true,否则false
子类的继承性
1、父类的成员变量和方法一定可以再子类使用吗? 因为要遵守访问规则,所以父类的成员变量方法不一定每一个都可以再子类中使用。 (1)那么在创建对象的时候还需要为父类这些成员变量分配内存吗? 要的,但是子类中不可以调用这些成员变量
2、什么叫继承? 如果父类的某个成员变量在子类中可以调用,那么说明这个成员变量被继承了。
pacakage S;
public class A{
public int 学号; //private int 学号;
}
Pacakage T;
class B extends S.A(如果不是一个包内,那么就需要写全称或者import S.A) {
B k = new B();
k.学号 =