黑马程序员面向对象继承

---------------------- android培训java培训、期待与您交流! ----------------------

继承

继承的概述

1.多个类中存在相同的属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。

2.多个类可以成为子类,单独这个类称为父类或者超类。

3.子类可以直接访问父类中的非私有的属性和行为。

4.通过extends关键字让类于类之间产生继承关系,

Java代码 复制代码 收藏代码
  1. 如:
  2. class SubDemo extends Demo{}
  3. class C
  4. {
  5. void demo1(){}
  6. }
  7. class A extends C
  8. {
  9. //void demo1(){}
  10. void demo2(){}
  11. }
  12. class B extends C
  13. {
  14. //void demo1(){}
  15. void demo3(){}
  16. }

优点:继承的出现提高了代码的复用性。

继承的出现让类于类之间产生了关系,提供了多态的前提。

继承的特点:

1.java只支持单继承,不支持多继承。

因为多继承容易带来安全隐患:当多个父类中定义了相同功能,

当功能内容不同时,子类对象不确定要运行哪一个。

但是java保留这种机制。并用另一种体现形式来完成表示。多实现。

一个类只能有一个父类,不可以有多个父类。

Java代码 复制代码 收藏代码
  1. class SubDemo extends Demo{}

2.java支持多层继承(继承体系)

Java代码 复制代码 收藏代码
  1. class A{}
  2. class B extends A{}
  3. class C extends B{}

定义继承需要注意:

1.不要仅为了获取其他类中的某个功能而去继承

2.类于类之间要有所属(“is a”)关系,xx1是xx2的一种。

如何使用一个继承体系中的功能呢?

想要使用体系,先查阅体系父类的描述,因为父类中定义的是该体系中共性功能。

通过了解共性功能,就可以知道该体系的基本功能。

那么这个体系已经可以基本使用了。

那么在具体调用时,要创建最子类的对象,为什么呢?

一是因为有可能父类不能创建对象,

二是创建子类对象可以使用更多的功能,包括基本的也包括特有的。

简单一句话:查阅父类功能,创建子类对象使用功能。

关系:

聚集- |has a

|聚合关系不是很紧密,如球员。

|组合事物关系连接紧密,如手和身体

子父类出现有类中成员的特点:

Java代码 复制代码 收藏代码
  1. class Fu
  2. {
  3. private int num = 4;
  4. public void setNum(int num)
  5. {
  6. this.num =num;
  7. }
  8. public int getNum()
  9. {
  10. return this.num;
  11. }
  12. }
  13. class Zi extends Fu
  14. {
  15. //int num = 5;
  16. void show()
  17. {
  18. System.out.println(num);
  19. }
  20. }
  21. class ExtendsDemo2
  22. {
  23. public static void main(String[] args)
  24. {
  25. Zi z = new Zi();
  26. z.show();
  27. //System.out.println(z.num+"...."+z.num);
  28. }
  29. }

类中成员:

1,变量。

2,函数。

3,构造函数。

1,变量

如果子类中出现非私有的同名成员变量时,

子类要访问本类中的变量,用this

子类要访问父类中的同名变量,用super。

super的使用和this的使用几乎一致。

this代表的是本类对象的引用。

super代表的是父类对象的引用。

2,子父类中的函数。

Java代码 复制代码 收藏代码
  1. class Fu
  2. {
  3. void show()
  4. {
  5. System.out.println("fu show");
  6. }
  7. void speak()
  8. {
  9. System.out.println("vb");
  10. }
  11. }
  12. class Zi extends Fu
  13. {
  14. void speak()
  15. {
  16. System.out.println("java");
  17. }
  18. void show()
  19. {
  20. System.out.println("zi show");
  21. }
  22. }
  23. class ExtendsDemo3
  24. {
  25. public static void main(String[] args)
  26. {
  27. Zi z = new Zi();
  28. z.speak();
  29. }
  30. }
  31. class Tel
  32. {
  33. void show()
  34. {
  35. System.out.println("number");
  36. }
  37. }
  38. class NewTel extends Tel
  39. {
  40. void show()
  41. {
  42. //System.out.println("number");
  43. super.show();
  44. System.out.println("name");
  45. System.out.println("pic");
  46. }
  47. }


原文地址:https://www.cnblogs.com/bjanzhuo/p/3576062.html