多态:一个事物具有多种表现形态,在Java的代码中就是:一个方法在具体的生成环境之中根据不同的需求会展现出不同的业务逻辑
多态的使用形式:
1.在定义的时候定义形参为父类,但是传入的时候就把子类类型给传入进去
2.定义方法的时候,返回值为父类,但是返回值是子类的对象
总结:基本原理都是父类的引用指向子类的对象;
通俗一点:就是首先先让A类通过extends继承B类,这样B类就是A类的“老爸”,以后只要是对B类“老爸”进行对操作,那么A类也同样得“听话”,这样具体如何辨别是哪一个B类就交给Java编译器即可
- 这里的Member类就是“父类”
package com.northeast.test;
public class Member {
public void buy(){
System.out.println("普通人员买书只打9折");
}
}
- 这里的StudentMember就是第一个子类
package com.northeast.test;
public class StudentMember extends Member{
public void buy(){
System.out.println("这是学生人员,买书打8折");
}
}
- 这里的SuperMember就是第二个子类
package com.northeast.test;
public class SuperMember extends Member{
public void buy(){
System.out.println("这是超级会员,买书打6折");
}
}
这里的StudentMember和SuperMember都继承了Member类,并且他们都有buy()方法函数
- 所以在这里只需要写一个对他们父类member进行操作的函数,就相当于“控制”了他们的子类
- 在这里通过编写cashier类来对他们统一操作
package com.northeast.test;
public class Cashier {
// 直接一点,定义一个Member成员的变量,一切都直接对member成员直接操作
private Member member;
// 将传递进来的成员指定为私有变量member
public void setMember(Member b){
this.member=b;
}
// 调用member类的buy函数
public void use(){
this.member.buy();
}
}