zoukankan      html  css  js  c++  java
  • [Java学习] Java继承的概念与实现

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

      继承可以理解为一个类从另一个类获取方法和属性的过程。如果类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. }

      (编辑:雷林鹏 来源:网络)

  • 相关阅读:
    python_异常处理
    python_类与对象
    函数
    字符串(查找,替换,分割)
    容器类型的数据
    条件语句
    关于WinSock编程的多线程控制
    利用Delphi编写Socket通信程序
    SQL Server数据库开发的二十一条军规
    SQL Server中的日期格式化
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9166572.html
Copyright © 2011-2022 走看看