OOP面向对象编程四

「爱情、让人受尽委屈。」 2022-05-18 10:56 459阅读 0赞

十六. super关键字

  1. 1. 为什么要使用super关键字?
  2. 1)子类中要访问父类方法或变量。
  3. 2) 子类中调用父类的构造器
  4. 2. 使用注意事项:
  5. a. 只能在构造方法或实例方法内使用super关键字,在静态方法和静态代码块内不能使用super关键字。
  6. b. 在子类构造方法中如没有使用this关键字,会隐式调用父类的无参构造方法;
  7. class Father() \{
  8. public Father() \{
  9. //这里第一行隐含一句代码: super();
  10. System.out.println("In Father()");
  11. \}
  12. \}
  13. class Son extends Father \{
  14. \}
  15. public class Test \{
  16. public static void main(String\[\] args) \{
  17. new Son(); //打印输出 In Father()
  18. \}
  19. \}
  20. -----------------------------------------------------------------------
  21. class Father() \{
  22. public Father() \{
  23. System.out.println("In Father()");
  24. \}
  25. \}
  26. class Son extends Father \{
  27. public Son() \{
  28. System.out.println("In Son()");
  29. \}
  30. \}
  31. public class Test \{
  32. public static void main(String\[\] args) \{
  33. new Son();
  34. //打印输出 In Father()
  35. // In Son()
  36. \}
  37. \}
  38. -----------------------------------------------------------------------
  39. class Father() \{
  40. public Father(String name) \{
  41. System.out.println("In Father() " + name);
  42. \}
  43. \}
  44. class Son extends Father \{
  45. public Son() \{
  46. System.out.println("In Son()");
  47. \}
  48. \}
  49. public class Test \{
  50. public static void main(String\[\] args) \{
  51. new Son(); //编译出错, 子类会隐式调用父类中无参构造方法,而此时父类中不存在无参构造方法。
  52. \}
  53. \}
  54. -----------------------------------------------------------------------
  55. class Father() \{
  56. public Father(String name) \{
  57. System.out.println("In Father() " + name);
  58. \}
  59. \}
  60. class Son extends Father \{
  61. public Son() \{
  62. super("zs");
  63. System.out.println("In Son()");
  64. \}
  65. \}
  66. public class Test \{
  67. public static void main(String\[\] args) \{
  68. new Son();
  69. //打印输出:
  70. //In Father() zs
  71. //In Son()
  72. \}
  73. \}
  74. -----------------------------------------------------------------------
  75. class Father() \{
  76. public Father() \{
  77. System.out.println("In Father()");
  78. \}
  79. public Father(String name) \{
  80. System.out.println("In Father(String name)");
  81. \}
  82. \}
  83. class Son extends Father \{
  84. public Son() \{
  85. this("zs");
  86. System.out.println("In Son()");
  87. \}
  88. public Son(String name) \{
  89. System.out.println("In Son(String name)");
  90. \}
  91. \}
  92. public class Test \{
  93. public static void main(String\[\] args) \{
  94. new Son();
  95. //打印输出:
  96. //In Father()
  97. //In Son(String name)
  98. //In Son()
  99. \}
  100. \}
  101. c. 构造方法中this(...)和super(...)不能同时出现;

十七. 多态
多态的俩中描述:
1.一个父类类型的引用可以指向他任何一个子类的对象
2.[相同]类域的[不同]对象执行[同一]方法的时候会有[不同]的表现

  1. 多态是出现在具有继承关系的两个类的对象之间,所以它不像方法重载(发生在一个类中)在编译期间发生(也就是确定下来),而是在运行期间发生(确定下来)。
  2. Java中的方法是在代码运行时动态绑定的。

十八. 类型转换

  1. 转换:
  2. 1) 先使用instanceof 识别类型
  3. 2) 子类型隐式地扩展到父类型(自动转换)
  4. 3) 父类型必须显式地缩小到子类型
  5. 转换规则:被转换的实际对象类型一定是转换以后对象类型的自身或者子类。
  6. Person p = new Person();
  7. Student s = (Student)p; 编译不会错,运行时错误
  8. Person p2 = new Student();
  9. Student s = (Student)p2 或者 Person p = (Student)p2; 正确

发表评论

表情:
评论列表 (有 0 条评论,459人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面向对象编程OOP

    一.定义 面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序...

    相关 面向对象编程 OOP

      1.面向对象编程 OOP         OOP:Object Oriented Programming,即面向对象编程。了解面向对象编程之前,需要了解下面向过程编程

    相关 面向对象编程OOP

    面向对象编程(OOP)      Java是一个支持并发、基于类和面向对象和计算机编程语言。如下是面向对象软件开发的优点:         1、代码开发模块化,更容易维

    相关 OOP面向对象编程

    六. this关键字     在方法调用、参数传递过程中,极有可能出现参数名称与实例变量名同时的情况。在一个方法内,可以定义和成员变量同名的局部变量或参数,此时成员变量被屏蔽

    相关 面向对象编程思想(OOP)

    本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性、七大设计原则和23种设计模式之间的关系。 软件开

    相关 面向对象编程OOP

    一:面向对象编程是java的一个优点:特性:【①封装②继承③多态④抽象】 (1):代码开发模板化.易维护,修改 (2):代码复用 (3):增强代码可靠性,灵活性 (4)