美文网首页
java -多态

java -多态

作者: snoweek | 来源:发表于2016-05-11 22:27 被阅读97次
面向对象编程有三大特性:封装、继承、多态。
  1. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
  2. 继承是为了重用父类代码。同时继承也为实现多态做了铺垫。
    继承可以理解为一个对象从另一个对象获取属性的过程,他允许创建分等级层次的类。如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。
    在Java中,类的继承是单一继承,也就是说,一个子类只能所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。
    通过过extends关键字可以申明一个类是继承另外一个类而来的,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性。
    我们通过使用instanceof 操作符,来判断一个类是不是另一个类的子类,即可检验继承,也可检验实现。
System.out.println(dog instanceof Animal);

运行结果为true

  1. 多态是同一个行为具有多个不同表现形式或形态的能力。
    多态性是对象多种表现形式的体现。

在此片文章中,着重介绍多态。

java中存在三种多态

  1. 重载(overload):在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,或者是参数的个数不同,或者是参数的类型不同。
    注意,方法的返回类型和参数名称不参与比较。只由参数区分,与方法的返回值无关,即返回值可以相同,也可以不同。
class A{
       float add(int a,int b){
          return a+b;
       }
       float add(long a,int b){
          return a+b;
       }
       double add(double a,int b){
          return a+b;
       }
}
  1. 重写(override),即与继承有关的多态:重写发生在子类继承父类的情况下,方法名称,参数类型,参数个数必须均与父类方法相同,返回值类型相同或相容(为其子类),方能称之为重写。
    继承的多态性指的是父类的某个方法被多个不同的子类重写时,可以各自产生自己的行为。重写若想实现多态,必须借助上转型对象这一概念。
public abstract class Animal {
   public abstract void cry();  
}
public class Dog extends Animal{
    public void cry(){
        System.out.println("狗的叫声:汪汪");
    }       
}
public class Cat extends Animal{
    public void cry() {
        System.out.println("猫的叫声:喵喵");  
    }
}
public class test {
    public static void main(String[] args) {
        Animal dog=new Dog();
        dog.cry();
        Animal cat=new Cat();
        cat.cry();
    }
}
  1. 接口:不同的类在实现统一接口时,可能具有不同的实现方式,则接口变量在回调接口哦方法的时候,就可能具有多种形态。
    基于接口实现的多态
public interface Animal {
     public  void cry();  
}
public class Dog implements Animal{
    public void cry(){
        System.out.println("狗的叫声:汪汪");
    }       
}
public class Cat implements Animal{
    public void cry(){
        System.out.println("猫的叫声:喵喵");
    }       
}
public class test {
    public static void main(String[] args) {
        Animal dog=new Dog();
        dog.cry();
        Animal cat=new Cat();
        cat.cry();
    }
}

相关文章

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运行时...

  • 2018-01-25

    多态机制 java语言,实现多态...

  • java多态之简述

    Java的第三大特性------>多态 一、什么是多态 多态根据其字面意思就是多种形态的意思,那么在Java中的多...

  • 学习JavaScript设计模式——面向对象(五)

    面向对象(五) 多态 我仔细看了一下,这里说的JavaScript 的多态好像和Java的多态不一样, Java ...

  • Java基础之面向对象

    1.多态,继承,封装 Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用? 答:多态的优点 ...

  • Java 多态

    1、Java 多态分类 1)编译时多态:方法重载。2)运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决...

  • Java 多态之方法调用顺序

    本文例子取于<深入理解java多态性>和,分析 Ja...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

网友评论

      本文标题:java -多态

      本文链接:https://www.haomeiwen.com/subject/pcpurttx.html