1.多态
- 含义:父类的对象的创建有子类来完成
1 public class A { 2 String name = “刘秦”; 3 public void m01() { 4 System.out.println(“===刘秦===”); 5 } 6 } 7 public class B extends A{ 8 String name = “扎古斯”; 9 public void m01() { 10 System.out.println(“===扎古斯===”); 11 } 12 13 public static void main(String[] args) { 14 A a = new A(); //父类的对象创建由父类自己来完成 15 A a2 = new B(); //父类的对象创建由子类完成 16 17 System.out.println(“a1.name = ” + a1.name); //都是输出A中属性name 18 System.out.println(“a2.name = ” + a2.name); //都是输出A中属性name 19 20 a1.m01(); //输出A中m01方法 21 a2.m01(); //输出B中m01方法 22 } 23 }
- 多态在应用中需要注意的环节
- 当出现子类和父类都定义了同名的属性名, 则父类的对象在创建过程中由子类完成, 那么在调用同名属性的时候,会输出父类中的属性名
- 当出现子类和父类都定义了同名的方法名(方法的重写), 则父类的对象在创建过程中由子类完成, 那么在调用同名的方法名, 会输出子类中的方法
- 方法覆盖(override),方法重载(overload)
- 方法覆盖(重写):子类的方法名和父类完全一样, 方法中参数和父类中方法参数完全一样, 子类方法的返回类型和父类中方法的返回类型完全一样, 子类方法的访问修饰符权限一定不能比父类的访问修饰符的权限小
- 方法重载:子类的方法名和父类完全一样, 方法中参数不一样(参数类型和参数个数), 方法的返回类型不作要求, 方法的访问修饰符不作要求。(自身类中也可以定义方法的重载)
2.请计算员工的工资体系, 要求工资的计算方式 工资 = (基本工资 + 绩效工资) * 考评等级。使用多态的特点来设计这个程序
1 /** 2 * 通过Java中多态的设计思想来完成工资的计算 3 * 1. 考虑试用期的员工工资 4 * 2. 考虑不同岗位级别的员工工资 5 * @author caleb 6 * 7 */ 8 public class EmployeeSample { 9 10 double jobLevel; //职位等级 11 double salary; //基本工资 12 double examLevel; //考评等级 13 14 String name; //员工的名字 15 16 public EmployeeSample(String name, double jobLevel, double salary, double examLevel) { 17 this.name = name; 18 this.jobLevel = jobLevel; 19 this.salary = salary; 20 this.examLevel = examLevel; 21 } 22 23 /** 24 * 试用期的员工工资 25 */ 26 public void sumSalary(double sale) { 27 System.out.println(name + " 员工工资 : " + (salary * sale)); 28 } 29 30 /** 31 * 正式员工的工资 32 */ 33 public void sumSalary() { 34 System.out.println(name + " 员工工资 : " + (salary + jobLevel * salary) * examLevel); 35 } 36 37 public static void main(String[] args) { 38 EmployeeSample 扎古斯 = new EmployeeSample("扎古斯", 0.3, 8000, 1); 39 扎古斯.sumSalary(); //正式员工的工资 40 41 EmployeeSample 刘秦 = new EmployeeSample("刘秦", 0.1, 4000, 1); 42 刘秦.sumSalary(0.8); //试用期员工的工资 43 } 44 45 }
浙公网安备 33010602011771号