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

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

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

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

重载,继承,重写和多态

原文链接: http://blog.ithomer.net/2014/07/overloading-inheritance-overriding-the-differences-and-polymorphism/

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

时间: 2024-10-26 10:29:57

重载,继承,重写和多态的区别的相关文章

重载,重写,多态例子

重载 方法重载是让类以统一的方式处理不同类型数据的一种手段.Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义.调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法. package com.wzs; /** * 重载 * * @author Administrator * */ public class OverLoadTest { public int add(int a, int b) { return a + b; } pub

C#构造函数问题,重载,重写,覆盖的区别

在C#当中,程序员写的每一个类在没写其它构造函数的情况下,都会默认有一个无参构造函数. 代码如下: class DemoClass { public string Name { set; get; } } DemoClass demoOb = new DemoClass(); 如果程序员写了其它的构造函数,那类本身默认的无参构造函数会自动消失,所以更谈不上构造函数重载. 代码如下: class DemoClass { public string Name { set; get; } //添加一个

Java面试——重载、重写、重构的区别

一.重载 构造函数是一种特殊的函数,使用构造函数的目的是用来在对象实例化时初始化对象的成员变量.由于构造函数名字必须与类名一致,我们想用不同的方式实例化对象时,必须允许不同的构造方法同时存在,这就用到了重载. 重载虽然起源于构造方法,但是在普通方法中也可以使用方法的重载.方法的重载就是在同一个类中允许同时存在多个同名方法,只要这些方法的参数类型.个数.顺序不同即可. package com.java.test; public class ReLoad { //构造方法的重载 public ReL

封装、继承、重载、重写、多态

有时候,代码写的不少,但有些术语却总是记得不太清楚:有些原理,明明经常用到,但却不太会描述.既然如此,那就记录下来,印象不深的时候再来看看. 1.封装:把对象的属性.操作(或业务)结合为一个整体(class),并尽可能得隐藏内部实现细节,使得对数据的访问只能通过已定义的接口. public class Person { private String name = "张三"; private int age = 18; public String getName() { return n

Java中的重载、重写、多态,静态绑定、动态绑定

重载,英文名是overload,是指在一个类中定义了一个以上具有相同名称的方法,这些方法的参数个数.参数类型和顺序不能相同.返回类型可以相同,也可以不同. public class TstaticOverload { static int height; TstaticOverload() { System.out.println ("Planting a seedling"); height = 0; } TstaticOverload(int initialHeight) { he

小记(重载,重写,多态)(linux du和df)

1.一个方法名,参数不同,这叫方法重载.(Overload)void foo(String str);void foo(int number); 2.父类与子类有同样的方法名和参数,这叫方法覆盖.(Override)class Parent {      void foo() {                System.out.println("Parent foo()");    }  } class Child extends Parent {    void foo() { 

C++中重载,重写,隐藏的区别

重载: 重载是指在同一个作用域下,函数的函数名相同,但是函数参数的个数,或者参数的类型,参数的顺序不同.这时函数之间就构成了重载关系,这里需要注意的是,如果函数的参数列表完全相同,仅仅是返回值类型不同并不能构成重载.同一个作用域又怎么理解呢?在这里主要分两种情况讨论,一种是在类外但是函数在同一个CPP文件中属于同一个作用域,另一种是在类中也属于同一个作用域. 函数在类外,但是同在一个CPP文件 //函数在类外,但是同在一个CPP文件 #include <iostream> using name

Java中重载、重写与重构的区别

一.重载 重载的概念:在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可. 重载的规则: 必须具有不同的参数列表. 可以有不同的返回类型,只要参数列表不同就可以了. 可以有不同的访问修饰符. 可以抛出不同的异常. 二.重写 重写的概念:(还可以称为覆盖)就是在子类中将父类的成员方法的名称保留,重写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型 重写的规则: 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载. 访问修饰符的限制一

C#中多态、重载、重写区别分析

本文实例总结了C#中多态.重载与重写的概念与区别.对于初学C#的朋友来说有不错的参考价值.分享给大家供大家参考.具体分析如下: 重写 : 是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override . 格式如下: 1.在基类中: public virtual void myMethod() { } 2.在子类中: public override void myMethod() { } 重写以后,用基类对象和子类对象访问myMethod()方法,结果都是