1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 继承中类的成员访问的特点:
- 成员变量的特点:在子类的方法中访问一个变量,采用的叫就近原则。
- 最先在子类局部范围查找
- 然后在子类成员范围查找
- 最后在父类成员范围查找
- 直到都没有,就报错
- super关键字
- this指向的是当前的对象,【我】
- super指向的是当前对象的父类对象,【我爹】
- 使用this和super调用方法和变量
- 成员变量:
- this.成员变量 -访问本类对象的成员变量
- super.成员变量 -访问父类对象的成员变量
- 成员方法:
- this.成员方法 -访问本类对象的成员方法
- super.成员方法 -访问父类对象的成员方法
- 构造方法:
- this() -访问当前对象的构造方法
- super() -访问父类对象的构造方法
- 所有的子类,在创建对象的时候,一定一定一定先调用父类的构造方法,然后再调用本类的构造方法创建对象。
- 子类中所有的构造方法,都会默认的访问父类的无参构造方法。
- 如果父类没有无参构造方法,那么子类必须在构造方法的[第一行]显式调用父类的有参构造方法并传递参数。
- 由于this()和super()都必须在构造方法的第一行,所以二者不能共存
- 父类的方法被子类的同名方法覆盖,这种情况叫方法的【重写】
- 具体的表现:
- 子类中出现了和父类中一模一样的方法声明(方法名相同,参数列表也相同)
- 重载和重写的区别:
- 重载是发生在同一个类中的,方法名相同,参数列表必须不相同。
- 重写是发生在父子类中的,方法名相同,参数列表也必须相同。
- 重写的目的:当子类需要父类的功能,但是功能的主体实现需要子类有自己特定的内容时,就需要重写父类的方法。
- 方法重写的注意事项:
- 1、private修饰的方法不能被重写,父类的私有成员子类是无法继承的。
- 2、子类方法的访问权限不能比父类方法的方法访问权限更低 public>default>private
- 3、父类的方法如果想被子类重写,那么就只能属于public或protected修饰
- 4、静态方法不能被重写,即使子类有父类相同的方法,也不是重写父类方法,只是方法同名。
- 案例:
- 某IT公司有``研发部门``和``设计部门``两个部门的员工,每名员工都有自己的``员工编号``、``员工姓名``、``员工岗位``3个属性,
- 并且每名员工都有自己的``工作内容``。
- 比如:
- - 员工姓名:张三,工作岗位是:Java开发工程师,员工编号是:1001,工作内容是:开发商城后台管理系统。
- - 员工姓名:李四,工作岗位是:前端开发工程师,员工编号是:1011,工作内容是:开发商城首页。
- - 员工姓名:王五,工作岗位是:UI设计师,员工编号是2001,工作内容是:商城logo设计。
- - 员工姓名:赵六,工作岗位是:UI设计师,员工编号是2002,工作内容是:商城logo设计。
- | 员工类类名 | ``Employee`` |
- | ------------------ | --------------------------- |
- | 研发部类名 | ``RDDepartment`` |
- | 设计部类名 | ``DesignDepartment`` |
- | Java开发工程师类名 | ``JavaDevelopmentEngineer`` |
- | 前端开发工程师类名 | ``WebDevelopmentEngineer`` |
- | UI设计师类名 | ``UIDesigner`` |
- | 员工姓名 | ``name`` |
- | 员工编号 | ``id`` |
- | 员工岗位 | ``job`` |
- | 工作方法名 | ``work()`` |
- 请根据上面的信息,合理的编写代码,利用继承相关的知识,实现需求。
- 需求:
- - 员工类是父类
- - 创建员工类及其各种子类,并分别添加属性和方法。
- - 创建提示中的各类员工对象,并为属性赋值,然后调用工作的方法。
- - 类名、属性名、方法名必须严格按照表中来写。
- - 工作方法中要实现在控制台中输出哪一个部门的哪一个员工,id是什么,岗位是什么,以及在做什么工作内容。
|