JAVA学习:区分重写,重载和多态。

   首先来看概念区分:

重写是子类对父类的允许访问方法过程实现重新的编写,返回值和形参都不变。

重载是在一个类里面方法名字相同,而参数不同。返回值的类型可以是相同的也可以是不同的。

多态是同一个行为具有多个不同的表现形式或形态的能力。

深入解析:

重写:重写也叫做覆盖,是指父类与子类之间的关系。在子类继承父类的过程中,如果子类的方法名如父类的方法名是相同的,那么子类就不能继承父类的方法,此时,叫做子类重写或者覆盖了父类的方法。通过重写,可以使一个方法在不同的子类中表现出不同的行为。


如果子类没有重写父类的方法,那么子类在使用该方法时还是用的父类的方法,并且可以直接调用。

Public class Animal{

void bark(){

*************

}

}

public class  Cat  extends Animal{

void  eat(){

&&&&&&&&&

}

}

pubic class Dog extends Animal{

void eat(){

$$$$$$$$$$4

}

}

main函数

Cat  cat=new Cat();

Dog dog=new Dog();

cat.bark();

cat.eat();

dog.eat();

输出结果:**************

                  &&&&&&&&

                 $$$$$$$$$$


注意:在进行方法的重写时,子类不能够覆盖父类中声明时final或者是static的方法。

          子类的方法声明要和父类的相同,在进行重写的时候。

重载:调用方法时以 对象.方法(有无参数)来调用方法。虽然方法的名字相同,但是调用的方法时不同的。每个被重载的方法必须有一个独一无二的参数列表用来区分是用到了那个方法。在方法重载中,返回值的类型不能够作为是否重载的标志。如:void gets()和int gets()当调用gets()这个方法时,编译器无法识别具体调用的是哪个方法。


多态:多态是基于重写重载之上的,是JAVA的三大特性之一。

比如:

class  Shuben{

void   function(){

************

}

class    Yuwen  extends  Shuben{

void function(){

&&&&&&&&&&&&&&

}

void    color(){

^^^^^^^^^^^^

}

main?

Shuben   a=new Yuwen()

a.function();

a.color()://这段如果有,则报错。如果没有继续执行出结果。

}

运行结果:*************

注释:在使用多态来调用方法时,先检查父类中有没有该方法,如果没有,则报错,编译不能继续运行。如果有,则再进行调用对应子类中的方法。如果父类中有该方法则直接调用,子类中没有或者没被重写则直接调用。

成员变量,多态后,还都是父类的数值。

成员方法多态后如果子类有重写该方法则是子类的数值,如果没有或者没有重写该方法,则是父类的数值。静态方法调用后还都是父类的数值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog。其中Animal可以是类也可以是接口,Ca...
    木有鱼丸啦阅读 926评论 0 4
  • 一.成员变量与局部变量的区别 成员变量:在类中定义,用来描述对象将要有什么(属性)。可被本类方法和其他跟当前类有关...
    jeffierw阅读 563评论 0 0
  • 什么是对象 1.对象的概念:对特定一个存在事物2.什么是面向对象:以自我为中心对待一个特定事物存在,需要自己描述出...
    joshul阅读 730评论 0 1
  • 这大概是我几年来都没有非常认真地在一个晚上重新面对我自己了。当我还是一个小姑娘的时候我非常喜欢写blog,为blo...
    黄沁阅读 353评论 0 1
  • 今天是我生命当中独一无二的仅有的一天,如果一切如我所愿,在未来我将还有21868天。在一去不返的今天,收获的人生珍...
    成长无极限阅读 151评论 0 0