子类
在类的声明中,使用关键字extends来定义一个类的子类,格式如下:
class 子类名 extends 父类名 {
......
}
类的树形结构
Java的类按照继承关系形成树形结构(将类看作树上的结点),在这个树形结构中,根结点是Object类,即Object是所有类的祖先类,任何类都是Object类的子类。每个类(除了Object类)有且仅有一个父类,一个类可以有多个或零个子类。如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object类的子类。
子类和父类在同一个包中的继承性
如果子类和父类在同一个包中,那么,子类自然地继承其父类中不是private的成员变量作为自己的成员变量,并且也自然继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的权限保持不变。
子类和父类不在同一个包的继承性
当 子类和父类不在同一个包中时,父类中的private和友好访问权限的成员变量不会被子类继承,也就是说,子类只继承父类中protected和public访问权限的成员变量作为子类的成员变量;同样,子类只继承父类中protected和public访问权限的方法作为子类的方法。
public class People {
int age ,leg = 2,hand = 2;
protected void showPeopleMess(){
System.out.println("%d岁,%d只脚,%d只手\t",number);
}
}
public class student extends People {
int number ;
void tellNumber () {
System.out.println("学号:%d\t",number);
}
int add (int x,int y) {
return x+y;
}
}
public class UniverStudent extends Student {
int multi (int x,int y) {
return x*y;
}
}
public class Example{
public staitc void main (String args[]){
Student zhang = new Student();
zahng.age = 17;
zhang.number = 100101;
zhang.showPeopleMess();
zhang.tellNumber();
int x =9,int y = 29;
System.out.println("会做加法:");
int result = zhang.add(x,y);
System.out.printf("%d+%d=%d\n",x,y,result);
UniverStudent geng = new UniverStudent ();
geng.age = 21 ;
geng.number = 6609;
geng.showPeopleMess();
geng.tellNumber();
System.out.println("会做加法:");
result = geng.add(x,y);
System.out.printf("%d+%d=%d\n",x,y,result);
System.out.println("会做乘法:");
result = geng.multi(x,y);
System.out.printf("%dx%d=%d\n",x,y,result);
}
}