java -多态

面向对象编程有三大特性:封装、继承、多态。
  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();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态。例如:动物中的猫和狗。猫这个对象对应的是猫...
    陈凯冰阅读 344评论 0 1
  • 多态的存在有三个前提: 1.要有继承关系2.子类要重写父类的方法3.父类引用指向子类对象 看下面几个例子,你就全明...
    长脖子树阅读 5,889评论 1 4
  • 写在前面 由于找工作的原因,最近几个月都没有更新博客了。。。这篇可能是今年最后一篇总结类的博文了,希望能够写的好点...
    niaoge2016阅读 9,259评论 1 52
  • 一.成员变量与局部变量的区别 成员变量:在类中定义,用来描述对象将要有什么(属性)。可被本类方法和其他跟当前类有关...
    jeffierw阅读 559评论 0 0
  • 我想这篇文章应该配首背景音乐,就配光辉岁月吧,让后来的日子回想起来更有些许味道。 曾经父亲就告诉过我,写文章要“趁...
    秋叶文风阅读 470评论 0 0