java 多态
来源:互联网 发布:淘宝会员怎么注册 编辑:程序博客网 时间:2024/06/03 20:45
多态:同一个对象(事物)在不同时刻体现出来的不同状态。
多态的前提:1、有继承或实现关系;2、有方法重写;3、有父类引用指向子类对象 父 F = new 子();
多态的分类:
1、具体类多态
class Fu{}
class Zi extends Fu{}
Fu f = new Zi();
2、抽象类多态
abstract class Fu{}
class Zi extends Fu{}
Fu f = new Zi();
3、接口多态
interface Fu{}
class Zi implements Fu{}
Fu f = new Zi();
多态中成员的访问特点:
1、成员变量:决定于父类。(调用父类中不存在而子类中存在的成员变量,则会出错)
2、构造方法:先访问父类,后访问子类。(因为子类是继承父类的,所以创建子类对象的时候会先去初始化父类的数据)
3、成员方法:决定于子类。(调用父类中不存在,子类中存在的方法则会报错)
4、静态方法:决定于父类。
因为只有成员方法存在方法重写,所以它在运行时决定于子类中对应的方法。
class Animal{ public int sum = 10; public void show(){ System.out.println("show Animal"); } public static void info(){ System.out.println("info Animal"); }}class Dog extends Animal{ public int sum = 5; public int age = 20; public void show(){ System.out.println("show Dog"); } public void method(){ System.out.println("method Dog"); } public static void info(){ System.out.println("info Dog"); }}public class Test { public static void main(String[] args) { Animal a = new Dog(); System.out.println(a.sum); //100。成员变量不存在覆盖,所以访问的是父类中的变量 a.show(); //成员方法存在重写,所以父类中的方法会被子类中的方法覆盖,所以访问的是子类中的方法 a.info(); //因为静态方法和类相关,算不上重写,所以访问的还是父类中的方法 //a.method(); //错误,因为父类中没有这个方法 }}
输出结果:
10show Doginfo Animal
多态的好处?
1、提高代码的维护性(继承体现)
2、提高代码的扩展性(多态体现)
多态的弊端?
父不能使用子的特有功能。子可以当做父使用,父不能当作子使用
阅读全文
0 0
- Java学习 java -- 多态
- java多态
- java多态
- java多态
- java多态
- Java多态
- java多态
- JAVA@多态
- Java多态
- java 多态
- Java多态
- java多态
- [Java] 多态
- JAVA多态
- Java多态
- java多态
- java 多态
- java多态
- Cookie/Session机制详解
- JAVASE基础(八)
- LOJ6212-「美团 CodeM 决赛」melon
- CSS变量variable
- linux 配置网络
- java 多态
- 策略模式(Strategy Pattern)
- ConcurrentHashMap实现原理
- 【Java编程】编写一个计算N个整数平均值的程序
- 2017多校联合四1011/hdu6077Time To Get Up(模拟)
- Fence Repair-OJ
- union
- Impala 2、Impala Shell 和 Impala SQL
- sketchup/su模型导入到Unity3D