Jav最新实用教程 oublic class Manager extends Employee ∥)员变量 String list ∥方法略 此时如果在另一个类中创建 Manager类的实例 子类实例应用 public class Jerry public static void main(String args) Manager jerry= new Manager O,∥创建 Manager实例 /*因为 Manager继承自 employee,所以 Manager类中包含继承来的task属性以及共公的 get Task 方法。jery作为类的实例,也就可以访问相应的属性和方法* jerry task="管理员工 System. out. println("jery的工作是:"+jery. get Tasko 执行结果:Jery的工作是:管理员工。 2021年2月20日星期六
Java最新实用教程 2021年2月20日星期六 11 子类: public class Manager extends Employee {//成员变量 String list; //方法略 } 此时如果在另一个类中创建Manager类的实例。 子类实例应用: public class Jerry { public static void main(String args[]) { Manager jerry = new Manager (); //创建Manager实例 /*因为Manager继承自employee,所以Manager类中包含继承来的task属性以及共公的getTask 方法。jerry 作为类的实例,也就可以访问相应的属性和方法*/ jerry.task="管理员工"; System.out.println("jerry的工作是:"+jerry.getTask()); } } 执行结果:Jerry的工作是:管理员工
Jav最新实用教程 2.保护( protected)及友好成员的继承 如果把上例中的父类的属性和方法都用 protected修饰,即如下 定义 public class Employee 成员变量 id protected String name, phone, task;∥保护类型变量 protected String get Tasko∥成员方法 return task, 此时这样的改变对程序 Jerry. java的执行没有任何影响,因为 protected类型成员可以被 Employee类所在同一个包中的所有类 及其他包中的子类访问或继承,而此处定义的类都在当前包中 ,即在同一个包中 另外,细心的读者可能会发现,在例52中虽然方法被声明为 public,但变量task是没有修饰符的,即task等属性为默认的 2021年2月20日星期六
Java最新实用教程 2021年2月20日星期六 12 2. 保护(protected)及友好成员的继承 如果把上例中的父类的属性和方法都用protected修饰,即如下 定义: public class Employee {//成员变量 int id; protected String name,phone,task; //保护类型变量 protected String getTask()//成员方法 { return task; } } 此时这样的改变对程序Jerry.java的执行没有任何影响,因为 protected类型成员可以被Employee类所在同一个包中的所有类 及其他包中的子类访问或继承,而此处定义的类都在当前包中 ,即在同一个包中。 另外,细心的读者可能会发现,在例5.2中虽然方法被声明为 public,但变量task是没有修饰符的,即task等属性为默认的
Java最新实用教程 友好成员变量,但子类同样能够访问到。这是因为此类变量 或方法可以被同一个包中的其他类所访问,对于 Employee类 来说,同一个包中的所有类当然也包括子类 Manager。读者可 以自行验证。 3.私有成员的继承。 例5.3:同样的子类和子类实例,只把父类 Employee中的属性 即方法该为 private修饰。 public class Employee 成员变量 int id private String name, phone,task;∥私有变量 private String get Tasko ∥有成员方法 return task; 编译时出现如“ task has private access in Employee之类的错误 提示 2021年2月20日星期六 13
Java最新实用教程 2021年2月20日星期六 13 友好成员变量,但子类同样能够访问到。这是因为此类变量 或方法可以被同一个包中的其他类所访问,对于Employee类 来说,同一个包中的所有类当然也包括子类Manager。读者可 以自行验证。 3. 私有成员的继承。 例5.3:同样的子类和子类实例,只把父类Employee中的属性 即方法该为private修饰。 public class Employee {//成员变量 int id; private String name,phone,task; //私有变量 private String getTask() //私有成员方法 { return task; } } 编译时出现如“task has private access in Employee”之类的错误 提示
Jav最新实用教程 分析编译出错的原因可知,因为Jery类中建立了 Manager类 实例,而 Manager类是继承自 Employee类,但由于 Employee类 中的属性task、方法 get TaskO均为 Private类型,所以 Manager类 继承不到,即没有访问权限 事实上,对于私有成员,只有在定义私有成员的类自身中创建 该类的对象才能访问。私有成员的访问限制虽然较大,但对于 类的封装即模块化设计来说具有重要的意义。为了实现良好的 封装性,通常将类的成员变量声明为 private,再通过 public的方 法来对这个变量进行访问。 例如,上面 employee类中的方法该为 public就是比较好的一种 选择。 5.1.3隐藏和覆盖 隐藏和覆盖是指子类对从父类继承来的属性变量及方法可 以重新加以定义。 2021年2月20日星期六
Java最新实用教程 2021年2月20日星期六 14 分析编译出错的原因可知,因为Jerry类中建立了Manager类的 实例,而Manager类是继承自 Employee类,但由于Employee类 中的属性task、方法getTask()均为private类型,所以Manager类 继承不到,即没有访问权限。 事实上,对于私有成员,只有在定义私有成员的类自身中创建 该类的对象才能访问。私有成员的访问限制虽然较大,但对于 类的封装即模块化设计来说具有重要的意义。为了实现良好的 封装性,通常将类的成员变量声明为private,再通过public的方 法来对这个变量进行访问。 例如,上面Employee类中的方法该为public就是比较好的一种 选择。 5.1.3 隐藏和覆盖 隐藏和覆盖是指子类对从父类继承来的属性变量及方法可 以重新加以定义
Jav最新实用教程 属性的隐藏 子类对从父类继承来的属性变量重新加以定义,则继承父类的 属性被隐藏。如: c⊥ass inti =3 class B extends A float i =3.14 这时,子类中声明了与父类同名的属性变量i,即出现了子类变 量对同名父类变量的隐藏。这里所谓隐藏是指子类拥有了两个 相同名子的变量,一个继承自父类,另一个由自己声明;当子 类执行继承自父类的操作时,处理的是继承自父类的变量,而 2021年2月20日星期六
Java最新实用教程 2021年2月20日星期六 15 1. 属性的隐藏 子类对从父类继承来的属性变量重新加以定义,则继承父类的 属性被隐藏。如: class A{ int i = 3; … } class B extends A{ float i = 3.14f; … } 这时,子类中声明了与父类同名的属性变量i,即出现了子类变 量对同名父类变量的隐藏。这里所谓隐藏是指子类拥有了两个 相同名子的变量,一个继承自父类,另一个由自己声明;当子 类执行继承自父类的操作时,处理的是继承自父类的变量,而