Java多态
概述
一个子类对象既可以给这个子类引用变量赋值,又可以给子类的父类变量赋值
格式
父类类型 变量名=new 子类类型();变量名.方法名();
特点
- 父类引用变量指向子类对象
- 父类引用变量调用方法时,会调用子类重写后的方法
多态成员的特点
- 成员变量在编译时,参考的是父类中是否有被调用的成员变量,没有则编译失败
- 成员变量在运行时,参考的是父类中是否有被调用的成员变量,没有则运行失败
- 成员方法编译时,参考的是父类中是否有调用的方法,否则编译失败
- 成员方法在运行时,参考的是子类中是否有方法
代码
package com.test.test; //父类 public class Parent { int num=1; public void fun(){ System.out.println("父类"); } } //子类 public class Children extends Parent { int num=2; public void fun(){ System.out.println("子类"); } } //main调用 public class Main { public static void main(String[] args) { Parent p = new Children(); System.out.println(p.num); p.fun(); } }
结果
1
子类
instanceof关键字:判断对象是否属于某种数据类型 格式:对象 instanceof 数据类型
多态优缺点
优点:
- 提高了代码复用性与维护性
- 提高了扩展性
- 安全性,将子类类型隐藏
缺点:
- 只能使用父类共性的内容,无法使用子类特有的功能