java多态知识点总结

多态

理解

多态:一种事物有多种表现形式。面向对象的最后一个特征,继承和封装都是为多态打基础!
生活中的多态:
打招呼:
中国人:你好
英国人:hello
日本人:拷逆七娃
韩国人:阿娘哈赛you
泰国人:萨瓦迪卡

多态的体现

1、方法的多态性
方法的重写和重载

2、对象的多态性
对象的转型上!
Person p = new Student();

引用类型之间的类型转换(对象的多态)

前提:父子关系
一、向上转型
本质:父类的引用指向了子类的对象
语法:
父类类型 引用名 = new 子类类型();
特点:
编译看左边,运行看右边
可以调用父类类型中的所有成员,不能调用子类类型中特有成员;最终运行效果看子类的具体实现!
二、向下转型
语法:
子类类型 引用名 = (子类类型)父类引用;
特点:
①只能强转父类的引用,不能强转父类的对象
②要求父类的引用必须指向的是当前目标类型的对象
③可以调用子类类型中所有的成员



补充:属性没有重写之说!属性的值看编译类型




实例1:用来说明向上转型时,对于属性则访问左边类型,对于子类重写方法,则调用方法是访问的是子类的方法

/**
 * 此类用于演示关于属性的多态型
 * 属性:没有重写之说
 * 通过多态访问属性时,属性值要看左边的编译类型!
 *
 */
public class TestPoly2 {
    
    public static void main(String[] args) {
         //使用多态
          Father f = new Son();
         
          f.show();//打印Son的show
         
         System.out.println(f.name);//打印出来的是张翠山
    }
}
class Father{
     String name="张翠山";
       public void show(){
         System.out.println("father show");
      }
}
class Son extends Father{
    String name="张无忌";
    public void show(){
         System.out.println("son show");
         System.out.println(super.name);
         System.out.println(this.name);
    }
}

多态的应用

1、多态数组
数组的元素类型允许是子类类型,相当于可以容纳更多的元素
2、多态参数
实参的类型允许是子类类型,相当于提高了代码的通用性和扩展性



猜你喜欢

转载自blog.csdn.net/student__software/article/details/79650009
今日推荐