当前位置:  编程技术>java/j2ee

java中重载,继承,重写和多态的区别

    来源: 互联网  发布时间:2014-11-07

    本文导语:  重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员。 2)重写是继承后重新实现父类的方法。 3)重载是在一个类里一系列参数不同名字相同的方法。 4)多态则是为了避免在父类里大量重载引起代码臃肿且难...

重载,继承,重写和多态的区别:

1)继承是子类获得父类的成员。
2)重写是继承后重新实现父类的方法。
3)重载是在一个类里一系列参数不同名字相同的方法。
4)多态则是为了避免在父类里大量重载引起代码臃肿且难于维护。

网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。

下面的例子包含了这四种实现:

class Triangle extends Shape {

 public int getSides() {
  return 3;
 }
}

class Rectangle extends Shape {
 public int getSides(int i) {
  return i;
 }
}

public class Shape {
 public boolean isSharp(){
  return true;
 }

 public int getSides(){
  return 0 ;
 }
 public int getSides(Triangle tri){
  return 3 ;
 }
 public int getSides(Rectangle rec){
  return 4 ;
 }

 public static void main(String[] args) {
  Triangle tri = new Triangle();
  System.out.println(“Triangle is a type of sharp? ” + tri.isSharp());
  Shape shape = new Triangle();
  System.out.println(“My shape has ” + shape.getSides() + ” sides.”);
 }
}

红色是重载,绿色是重写,蓝色是继承,粉红是多态

注意Triangle类的方法是重写,而Rectangle类的方法是重载。
比较红色的和粉红的部分就可以发现多态对重载的优点:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java没有多继承,用接口来实现多继承的功能,但哪里体现了多继承啊?我对接口的概念一直弄不清楚,请大家帮忙!
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好??? iis7站长之家
  • xx.java继承yy.class,编译xx.java为xx.class时应怎样书写?(谢谢)
  • 关于java的访问控制和继承,这段话怎么理解?
  • 求java.io包中的类的继承关系!
  • 请教大家!!!java如何实现多重继承?接口该如何使用?份数可以再加,只要我明白了
  • 一个JAVA继承的问题(Thinking in JAVA里的一个例子)
  • java继承中的构造方法实例解析
  • java里有没有象vc里的sleep(1000)一样的功能的东西 当然不是实现Runnable不是继承线程类
  • 有关Java构造函数的问题之三——继承性
  • 有两个:1.class与2.java,2.java继承1.class类,要把2.java编译成2.class给如何书写!
  • 在JAVA中如何用接口实现C++的多重继承呀?帮帮忙!
  • 提一个java继承方面的问题
  • java中 IO 常用IO操作类继承结构分析
  • 那位大虾知道javaScript的window对象是从java的什么类里继承来的?可否实现如下功能
  • 《thinking in java》一个有关继承的程序不明白,请讲一讲,谢谢
  • Java基础教程之接口的继承与抽象类
  • JAVA中阻止类的继承(官方和非官方)
  • JAVA 继承基本类、抽象类、接口介绍
  • java教程之java继承示例详解
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3