Java继承的概念与实现
2016-07-13 15:00:53   来源:   评论:0 点击:

 继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。

继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承于类A,那么B就拥有A的方法和属性。

继承使用 extends 关键字。

例如我们已经定义了一个类 People:
 
  1. class People{
  2. String name;
  3. int age;
  4. int height;
  5.  
  6. void say(){
  7. System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
  8. }
  9. }
 
如果现在需要定义一个类 Teacher,它也有 name、age、height 属性和 say() 方法,另外还需要增加 school、seniority、subject 属性和 lecturing() 方法,怎么办呢?我们要重新定义一个类吗?

完全没必要,可以先继承 People 类的成员,再增加自己的成员即可,例如:
 
  1. class Teacher extends People{
  2. String school; // 所在学校
  3. String subject; // 学科
  4. int seniority; // 教龄
  5.  
  6. // 覆盖 People 类中的 say() 方法
  7. void say(){
  8. System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄");
  9. }
  10.  
  11. void lecturing(){
  12. System.out.println("我已经" + age + "岁了,依然站在讲台上讲课");
  13. }
  14. }
 
对程序的说明
  • name 和 age 变量虽然没有在 Teacher 中定义,但是已在 People 中定义,可以直接拿来用。
  • Teacher 是 People 的子类,People 是Teacher 类的父类。
  • 子类可以覆盖父类的方法。
  • 子类可以继承父类除private以为的所有的成员。
  • 构造方法不能被继承。

继承是在维护和可靠性方面的一个伟大进步。如果在 People 类中进行修改,那么 Teacher 类就会自动修改,而不需要程序员做任何工作,除了对它进行编译。

单继承性:Java 允许一个类仅能继承一个其它类,即一个类只能有一个父类,这个限制被称做单继承性。后面将会学到接口(interface)的概念,接口允许多继承。

最后对上面的代码进行整理:
 
  1. public class Demo {
  2. public static void main(String[] args) {
  3. Teacher t = new Teacher();
  4. t.name = "小布";
  5. t.age = 70;
  6. t.school = "清华大学";
  7. t.subject = "Java";
  8. t.seniority = 12;
  9. t.say();
  10. t.lecturing();
  11. }
  12. }
  13.  
  14. class People{
  15. String name;
  16. int age;
  17. int height;
  18.  
  19. void say(){
  20. System.out.println("我的名字是 " + name + ",年龄是 " + age + ",身高是 " + height);
  21. }
  22. }
  23.  
  24. class Teacher extends People{
  25. String school; // 所在学校
  26. String subject; // 学科
  27. int seniority; // 教龄
  28.  
  29. // 覆盖 People 类中的 say() 方法
  30. void say(){
  31. System.out.println("我叫" + name + ",在" + school + "教" + subject + ",有" + seniority + "年教龄");
  32. }
  33.  
  34. void lecturing(){
  35. System.out.println("我已经" + age + "岁了,依然站在讲台上讲课");
  36. }
  37. }
 
运行结果:
我叫小布,在清华大学教Java,有12年教龄
我已经70岁了,依然站在讲台上讲课

注意:构造方法不能被继承,掌握这一点很重要。 一个类能得到构造方法,只有两个办法:编写构造方法,或者根本没有构造方法,类有一个默认的构造方法。

相关热词搜索:概念

上一篇:Java源文件的声明规则
下一篇:Java super关键字

分享到: 收藏