一、多态
1、格式:
- 父类类型 变量名 = new 子类类型();
- 然后通过 变量名.方法名()调用在子类中重写的方法
- 多态体现为父类引用变量可以指向子类对象:定义了一个父类类型的引用,指向新建的子类类型的对象,由于子类是继承他的父类的,所以父类类型的引用是可以指向子类类型的对象。
2、例子:
父类:
abstract class Animal {
abstract void eat();
}
子类:
class Cat extends Animal {
public void eat() {
System.out.println("吃鱼");
}
}
启动类:
public class Test {
public static void main(String[] args) {
Animal a = new Cat(); // 向上转型
a.eat(); // 调用的是 Cat 的 eat
}
二、重写
1、例子:
接口:
public interface Gd {
/**
* 发送短信
* @param phone 手机号
* @param context 内容
*/
void sendMsg(String phone, String context);
/**
* 打电话
* @param phone 手机号
*/
void call(String phone);
}
实现接口的父类:
public abstract class A implements Gd {
@Override
public void call(String phone) {
System.out.println("功能开发中 尽情期待");
}
}
子类1:
public class Dianxin extends A {
@Override
public void sendMsg(String phone, String context) {
//重写
System.out.println("电信发送短信中。。。。。。。");
}
}
子类2:
public class Yindong extends A{
@Override
public void sendMsg(String phone, String context) {
//重写
System.out.println("移动发送短信中。。。。。。。");
}
@Override
public void call(String phone) {
//重写
System.out.println("移动 打电话。。。。");
}
}
三、重载
1、含义:函数或者方法有同样的名称,但是参数列表不相同。
2、例子:
public static String bankCall(String name, String bankCode, String amt) {
return "发送成功";
}
public static String bankCall(String bankCode, String amt) {
String name = getNameByCode(bankCode);
/* 打款 */
return "发送成功";
}