继承(inheritance)是面向对象编程的核心机制之一,没有使用继承的程序设计,就不能成为面向对象的程序设计。
1.继承的定义
特殊类的对象拥有一般类的全部属性与行为,称为特殊类对一般类的继承。一个类可以是多个一般类的特殊类,也可以从多个一般类中继承属性与行为,但在java语言中,不允许一个类从多个一般类中继承属性与行为,即在java语言中,只支持单继承。
在软件开发中,通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。因此,类的继承性使所建立的软件具有开放性开放性、可扩充性,这是信息组织与分类的行之有效的方法,通过类的继承关系,使公共的特性能够共享,简化了对象、类的创建工作量,增加了代码的可重用性。
java 中继承使用关键字extends ,语法如下:
[类修饰符] class 子类名 extends 父类名{
语句;
}
在java中,java.lang.Object 类是所有java类的最高层父类,是唯一一个没有父类的类。如果在类的声明中未使用extends 关键字指明其父类,则默认父类为Object 类。java中的类的继承关系形成了以Object 类为树根的树状层次结构。例:
public class text{
......;
}
等价于
public class text extends Object{
......;
}
示例:
//Person
public class Person{
String name;
int age;
void eat(String s){
System.out.println(s);
}
void sleep(String s){
System.out.println(s);
}
}
//Teacher
public class Teacher extends Person{
int salary;
String school;
void teach(String s){
System.out.println(s);
}
public static void main(String[] args){
Teacher t = new Teacher();
t.name = "张三"; //实例化Teacher 类对象t
System.out.println("教师"+t.name);
t.eat("吃"); //使用从父类继承来的成员方法eat()
t.sleep("睡"); //使用从父类继承来的成员方法sleep()
t.teach("上课"); //使用在Teacher类中定义的teach()方法
}
}
注:成员变量和成员方法可以被继承,但是构造方法不能被继承。