美文网首页
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 -多态

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