这篇博客主要是总结一下Java中多态的相关的知识。
1.多态性的概念
对象多态性是从继承关系中的多个类而来
2.多态性的两种情况
(1)方法的重载与重写
(2)对象的多态性
3.对象的多态性
a.向上转型:将子类实例转为父类实例
格式:父类 父类对象 = 子类实例;->自动转换
b.向下转型:将父类实例转为子类实例
格式:子类 子类对象 = (子类) 父类实例->强制转换
以基本数据类型操作为例: char c = (char)97;
因为整型是4个字节比char2个字节要大,所以要强制完成
4.多态性小结
(1)方法的重载与重写就是方法的多态性的表现
(2)多个子类就是父类中的多种形态
(3)父类引用可以指向子类对象,自动转换
(4)子类对象指向父类引用需要强制转换
(5)在实际开发中尽量使用父类的引用(有利于拓展)
PolymorphismDemo
public class PolymorphismDemo {
public static void main(String args[])
{
//继承什么就可以自动转化为什么类型
//向上转型
//父类的引用指向子类的对象
//父类就是大,子类就是小
Person man = new Man();//new谁就是调用谁的属性和方法
//前提是Person中要有这个say()方法
man.say();
Person women = new Women1();
women.say();
//强制转换 得是父子关系
Man m = (Man) man;
m.say();
}
}
abstract class Person{
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
abstract public void say();
}
class Man extends Person{
@Override
public void say() {
System.out.println("人家是纯爷们了");
}
}
class Women1 extends Person{
@Override
public void say() {
System.out.print("你今天要是再不交房租,我就烧了你的铺子");
}
}