继承中类的成员访问的特点: 成员变量的特点:在子类的方法中访问一个变量,采用的叫就近原则。 最先在子类局部范围查找 然后在子类成员范围查找 最后在父类成员范围查找 直到都没有,就报错 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是什么,岗位是什么,以及在做什么工作内容。