Java

构造方法

  1. 继承下构造方法的运行

    1. 实例化子类对象时 会先运行父类的构造
    2. 因为内存中子类对象中实际上包含 一个父类对象的引用 所有实例化子类对象前,要先实例化一个父类的对象
    3. 子类中如果没有无参构造 自动调用父类的无参构造 如果父类没有无参构造 会发生编译错误
    4. 子类中可以选择调用父类的构造方法 使用super关键字
  2. super关键字
  • super就是方法中对象对自身父类的引用
  • 2)super的使用

    • 2.1)super.<属性>
      父类和子类有同名属性时
      super.调用父类的属性
    • 2.2)super.<方法>(参数)
      父类和子类有同名方法时
      super.调用父类的方法
    • 2.3)super(参数);
      调用父类的构造方法
      必须编写在子类构造方法中
      的第一行
      java中如果在构造方法中
      没有编写调用哪个父类构造
      默认super();
  1. 向上造型
  • 1)子类对象当做父类对象使用
    就是向上造型
    例:
    Pet p=new Dog();
    子类对象赋给父类引用
    父类引用指向子类对象
  • 2)向上造型之后的优缺点

    • 2.1)缺点:
      父类类型的引用
      只能调用到父类中声明的成员
      不能调用到子类中声明的成员
    • 2.2)优点:
      声明一个父类类型的数组
      不同类型的子类对象可以放入
      同一个父类数组中
      统一管理
  1. 方法重写(方法覆盖,override)
  • 1)什么是方法重写
    就是在子类中编写一个
    和父类的某个方法一模一样的方法
    (方法体除外)
  • 2)为什么需要方法在重写
    向上造型后
    使用父类引用可以调用到
    子类重写后的方法
    从而实现:父类引用调用子类方法
  • 3)方法重写规则

    • 3.1)必须相同的
      方法名,参数列表
      如果方法的返回值类型是void
      或是基本数据类型,必须一致
    • 3.2)可以不同的

      1. 返回值类型
        返回值类型是引用数据类型
子类的返回值类型可以是
父类返回值类型的子类
  2. 访问修饰符(oopday05讲)
    子类重写方法的访问修饰符
不能比父类更严格
  3. 方法抛出的异常(第二阶段讲)
    子类抛出的异常
可以是父类抛出异常的子类
  1. 方法重载和方法重写
     位置 方法名 参数 返回值 修饰符 
重载 同类* 相同  不同  无关   无关
重写 子类  相同  相同  相同*  相同*
  • 方法重载中所有同一个类 实际上是指同一个作用域
  • 方法重载是编译期绑定
  • 方法重写是运行期绑定

构造方法的快捷键

Alt+Shift+S~O

作业
继承下构造方法的运行
1) 创建Person类
有属性String name

    int age
String gender

有无参构造和有参构造
定义Student,独有String grade属性
继承Person,编写无参和有参构造
使用super调用父类构造
定义Teacher,独有String major属性
继承Person,编写无参和有参构造
使用super调用父类构造
测试类中使用有参构造实例化两种对象
并输出信息

2) 在Person类中定义一个方法
show()输出Person类中的属性
Student类中重写父类的show方法

        输出grade属性值

Teacher类中重写父类的show方法

        输出major属性值        

测试类中定义一个Person类型的数组
向这个数组中赋值Student和Teacher对象
遍历数组输出元素信息

Comment

This is just a placeholder img.