继承(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()方法 } }
注:成员变量和成员方法可以被继承,但是构造方法不能被继承。