A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package practice;
  2. /**
  3. * 面向对象之继承
  4. *
  5. * 继承:        1.提高了代码的复用性。
  6. *                 2.让类与类之间产生了关系。有了这个关系,才有了多态的特性。
  7. *
  8. * Tips:不要为了获取其他类的功能,简化代码而继承,
  9. *                  必须是类与类之间有所属关系才可以继承。
  10. *
  11. * 重点:        1.在Java语言中,只支持单继承,不支持多继承,因为多继承容易带来安全隐患,
  12. *                 就是当父类中定义了相同功能,当功能内容不同时,子类对象不确定要运行哪一个。
  13. *                 但是Java保留了这种机制,并用另一种体现形式来完成表示,叫做多实现。
  14. *                 2.Java支持多层继承。
  15. *                 3.如何使用一个继承体系中的功能:先查阅父类体系的描述,因为父类中定义的是该体系的共性功能。
  16. *                 通过了解共性功能,就可知该体系的基本功能。在具体调用时,要创建最子类的对象(父类不能创建对象;
  17. *                 创建子类对象可以实现更多的功能)。
  18. *
  19. * 代码体现:
  20. * 子父类出现后,类成员的特点:
  21. *                 1.变量:如果子类中出现了非私有同名变量时,
  22. *                 子类访问本类中的对象时用this,子类对象访问父类对象用super。
  23. *                 (super的使用与this几乎一致,this本类对象引用,super父类对象的引用)       
  24. *                 2.函数:当子类出现和父类一模一样的函数时,子类调用该函数,会执行子类函数的内容。
  25. *                 这种情况是函数的另一个特性:重写(覆盖)。
  26. *                         覆盖注意事项:
  27. *                         (1).子类覆盖父类,必须保证子类的权限大于等于父类权限,才可以覆盖,否则编译失败。
  28. *                         (2).静态只能覆盖静态。
  29. *                         (3).与重载的区别:重载只看函数的参数列表;重写子类父类的方法一模一样。
  30. *                 3.构造函数
  31. *                 在对子类对象进行初始化时,父类函数也会运行,因为子类的构造函数中第一行有一条隐示的语句super();
  32. *                 super();会访问父类中空参数的构造函数。
  33. *                         Q:为什么子类一定要访问父类的构造函数
  34. *                         A:因为父类中的数据子类可以直接获取,子类对象在建立时,需要先查看父类是如何对这些数据初始化的。
  35. *
  36. * 例子:定义学生类和工人类,将学生和工人的共性提取出来,单独进行描述。
  37. *                 共性:name、age
  38. *
  39. * @author Qihuan
  40. *
  41. */

  42. //定义一个person类
  43. class Person {
  44.         private String name;
  45.         private int age;
  46.         void speak(){
  47.                 System.out.println("hello");
  48.         }
  49.         public String getName() {
  50.                 return name;
  51.         }
  52.         public void setName(String name) {
  53.                 this.name = name;
  54.         }
  55.         public int getAge() {
  56.                 return age;
  57.         }
  58.         public void setAge(int age) {
  59.                 this.age = age;
  60.         }
  61. }

  62. //学生类
  63. class Student extends Person {
  64.         void study() {
  65.                 System.out.println("Student:"+"\n"+"Name: "+getName()+"\n"+"Age:"+getAge());
  66.         }
  67.         void speak(){
  68.                 super.speak();
  69.                 System.out.println("study");//重写
  70.         }
  71. }

  72. //工人类
  73. class Worker extends Person {
  74.         void work() {
  75.                 System.out.println("Worker");
  76.         }
  77. }

  78. public class ExtendsPractice {
  79.         public static void main(String[] args) {
  80.                 Student stu = new Student();
  81.                 stu.setAge(20);
  82.                 stu.setName("LiMing");
  83.                 stu.study();
  84.                 stu.speak();
  85.         }
  86. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马