精华内容
下载资源
问答
  • 多态和继承的区别

    千次阅读 2015-11-09 06:35:02
    对象的区别 它们的关系是,对象是类的实例,类是对象的模板 ...重载,继承,重写和多态,泛型的区别: (1)重载是在一个类里一系列参数不同名字相同的方法。 (2)继承是子类获得父类的成员,使用父类的方
    1. 类和对象的区别
      它们的关系是,对象是类的实例,类是对象的模板

    2. 面向对象的四要素:

      封装(wrap)、继承(inheritance)、重载(override)还是多态(polymorphism),亦或是其他? 封装是优点,继承是基础,重载是特点,而多态则是特征。

    3. 重载,继承,重写和多态,泛型的区别:
      (1)重载是在一个类里一系列参数不同名字相同的方法。
      (2)继承是子类获得父类的成员,使用父类的方法。
      (3)重写是继承后重新实现父类的方法。
      (4)多态是具有表现多种形态的能力的特征,是为了避免在父类里大量重载引起代码臃肿且难于维护。继承是子类使用父类的方法,而多态则是父类使用子类的方法
      (5) 泛型就是指我们不为特定的类型进行专门编码,而采用对不同类型进行通用编码的方式,无论是数据结果还是算法,多态实际上就是泛型。

    下面的例子包含了这四种实现:
    
    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类的方法是重载。
    比较就可以发现多态对重载的优点:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。
    展开全文
  • 多态继承的区别

    2017-04-19 10:39:53
    什么是继承,继承的特点? 子类继承父类的特征行为,使得子类具有父类的各种属性方法。或子类从父类继承方法,使得子类具有父类相同的行为。 特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征...

    1、  什么是继承,继承的特点?

    子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。

    特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。

    在继承关系中。父类和子类需要满足is-a的关系。子类是父类。

    表示父类和子类的术语:父类和子类、超类和子类、基类和派生类,他们表示的是同一个意思。

    2、  为什么需要继承?什么时候应该继承?

    使用继承可以有效实现代码复用,避免重复代码的出现。

    当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。

    继承实现了面向对象的原则:write once,only once(编写一次、且编写一次

    3、  如何实现继承?

    Java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。

    在父类中只定义一些通用的属性和方法。

    子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。

    4、  什么是方法重写?

    如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。

    方法重写在不同类,是实现多态的必要条件。

    5、  super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?

    在子类的构造方法中,通过super关键字调用父类的构造方法。

    如果子类中重写了父类的方法,可以通过super关键字调用父类的方法。

    父类:

    private String name;

    private String sex;

    public xinxin1(String name,String sex)

    {

               this.name=name;

               this.sex=sex;

    }

             public void hello(){

                       System.out.println(“嗨!我是”+name+”我是”+sex+””);

             }

    子类:

    public xinxin2(String name,String sex)

    {

               //调用父类的构造方法

               super(name,sex);

    }

    public void hello(){

                       System.out.println(“我是新来的!”);

               //调用父类的方法

               super.hello();

    }

    位置注意:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。

    因为创建对象的时候,需要先创建父类对象,再创建子类对象。

    注意:创建对象时,先创建父类对象,在创建子类对象。如果没有显示调用父类的构造方法,将自动调用父类的无参构造方法。

    6、  一切类的老大(祖先)Object

    所有类都直接或者间接地继承了java.lang.Object类,Object类中定义了所有的java对象都具有的相同行为,是所有类的祖先。

    一个类如果没有使用extends关键字,那么这个类直接继承自Object类。

    7、  什么是多态?

    多态的特征是表现出多种形态,具有多种实现方式。或者多态是具有表现多种形态的能力的特征。或者同一个实现接口,使用不同的实例而执行不同的操作。

    8、  为什么需要使用多态?多态的好处?

    可以增强程序的可扩展性及可维护性,使代码更加简洁。

    不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

    9、  如何实现多态?

    一般做法是:写一个方法,它只接收父类作为参数,编写的代码只与父类打交道。调用这个方法时,实例化不同的子类对象(new 一个对象)。

    更具体的说:

    1)、子类重写父类的方法。使子类具有不同的方法实现。

    2)、把父类类型作为参数类型,该父类及其子类对象作为参数转入。

    3)、运行时,根据实际创建的对象类型动态决定使用那个方法。

    在运行时,java虚拟机会根据实际创建的对象类型决定使用那个方法。一般将这称为动态绑定。   

    10、多态小结:多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型的各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建的对象类型,调用子类中相应的方法(存在方法重写时)。

    展开全文
  • 多态和重载的区别

    千次阅读 2016-04-07 00:11:03
    多态和重载的区别(1)实现多态公有继承有两种机制第一种是:在派生类中重新定义基类方法。重新定义的方法和基类中的方法完全一致。即,函数名一致,函数的返回值类型一致,参数列表一致,只是行为不同,这就是多态...

    多态和重载的区别

    重载可认为是静态的多态,静态联编,发生在编译阶段;

    多态是动态的,动态联编,发生在运行阶段;

    静态的比动态的效率高,但动态的最大优点是多态性,提高代码复用性。


    (1)实现多态公有继承有两种机制

    第一种是:在派生类中重新定义基类方法。重新定义的方法和基类中的方法完全一致。即,函数名一致,函数的返回值类型一致,参数列表一致,只是行为不同,这就是多态公有继承,多态必须品:① 继承;② 参数列表和返回值必须完全一致的同名函数,即虚方法

    第二种是:虚方法。

    (2)函数重载的关键是什么

    关 键 在 于 函数的参数列表——特征标,
    参数列表指的是参数的数量、参数的类型以及参数的顺序。函数的返回值类型可以相同也可以不同,但是若想实现函数的重载,参数列表必须不同。前提是函数名相同。注意:类型引用和类型本身为同一特征标,如:void show(int i) 和 void show(int &i)不是函数的重载,是一个函数。

    关键字:函数多态;函数重载;区别

    展开全文
  • 我只是想知道主要的区别在于我自己的想法。我知道有很多类似的问题,但是,我没有看到哪些提供了明确的答案。#1 热门回答(236 赞)继承是指"类"派生自现有的"类"。所以如果你有aPersonclass,那么你有aStudentclass,...

    问题

    我今天在模块开卷考试结束时遇到了这个问题,发现自己迷路了。我正在阅读Head first Java,这两个定义似乎完全相同。我只是想知道主要的区别在于我自己的想法。我知道有很多类似的问题,但是,我没有看到哪些提供了明确的答案。

    #1 热门回答(236 赞)

    继承是指"类"派生自现有的"类"。所以如果你有aPersonclass,那么你有aStudentclass,扩展为Person,StudentinheritsallPersonhas。你在Person中的字段/方法上放置的访问修饰符有一些细节,但这是基本的想法。例如,如果你有私有字段onPerson,Student则不会看到它,因为其私有字段和私有字段对子类不可见。

    多态性处理程序如何决定应该使用哪种方法,具体取决于它具有什么类型的东西。如果你有a2222656537,它有一个read方法,并且你有一个Student,其扩展名为2119563202,它有自己的实现read,那么运行时会为你确定调用哪个方法,具体取决于你是否有aPerson或aStudent。它有点棘手,但是如果你做的话

    Person p = new Student();

    p.read();

    调用了读取方法onStudentgets。这就是多态性的作用。你可以执行该分配,因为aStudent是aPerson,但运行时足够聪明,知道实际类型为pisStudent。

    请注意,不同语言的细节不同。例如,你可以在javascript中继承,但它与Java中的工作方式完全不同。

    #2 热门回答(153 赞)

    继承表示在子类中存储超类的结构和行为。

    Polymorphism提到了替换子类中超类的行为。

    #3 热门回答(55 赞)

    Polymorphism:以类似方式处理不同类型对象的能力。例如:长颈鹿和鳄鱼都是动物,动物可以是Move。如果你有一个Animal的实例,那么你可以在不知道或关心它是什么类型的动物的情况下致电Move。

    继承:这是同时实现多态和代码重用的一种方法。

    其他形式的多态:还有其他实现多态的方法,比如接口,它只提供多态性但没有代码重用(有时候代码是完全不同的,比如Move对于Snake会与Move完全不同,对于Dog来说,在这种情况下在这种情况下,接口将是更好的多态选择。

    在其他动态语言中,可以使用Duck Typing实现多态,即类甚至不需要共享相同的基类或接口,它们只需要一个具有相同名称的方法。或者甚至更像Javascript这样的动态,你甚至根本不需要类,只是具有相同方法名称的对象可以多态使用。

    展开全文
  • 1 首先看一个多态的Demo: class Fu{ int num1 = 10; public Fu(){ } public void show1(){ System.out.println("num1 is " + num1); } }class Zi extends Fu{ int num1 = 11; int num2 = 2
  • C++中继承多态和Java中继承与多态的区别
  • Android基础之Java多态、继承、重载...继承还是面向对象语言基本特征【继承多态和封装】之一。在Java中,java.lang.Object这个类是所有类基类【也叫父类或者超类】。继承涉及到两个关键字如下:extends: 用于
  • 重载,继承,重写和多态的区别继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是为了避免在父类里大量重载引起代码臃肿且难于维护。网上看到一...
  • @抽象类特点:A:抽象类抽象方法必须用abstract关键字修饰B:抽象类中不一定有抽象方法,但是有抽象方法类必须定义为抽象类C:抽象类不能实例化因为它不是具体。抽象类有构造方法,但是不能实例化?构造方法...
  • 抽象类特点:A:抽象类抽象方法必须用abstract关键字修饰B:抽象类中不一定有抽象方法,但是有抽象方法类必须定义为抽象类C:抽象类不能实例化因为它不是具体。抽象类有构造方法,但是不能实例化?构造方法作用...
  • 继承和多态的区别

    2014-01-15 20:50:00
    继承是子类获得父类成员,重写是...网上看到一个有趣说法是:继承是子类使用父类方法,而多态则是父类使用子类方法。下面例子包含了这四种实现:class Triangle extends Shape {public int getSides() {r...
  • 原文地址:C++的继承和多态的区别作者:狼之行继承:是指子类按照一定方式继承基类的成员及函数。   如果此时定义一个基类的指针,并把子类的对象传给这个基类指针.假如子类基类都有一个相同函数。那么这个指针...
  • 文章目录抽象类的特点:抽象类接口的区别:为什么new子类要先执行父类构造方法多态的弊端及解决办法继承和多态中成员访问的特点总结 抽象类的特点: A:抽象类抽象方法必须用abstract关键字修饰 B:抽象类中不...
  • 1.方法重写思路:先写一个父类People,在类中定义一个 print方法 ,然后写一个子类 Student 继承父类,重写print方法。//父类class People{public void print(){System.out.println("这是父类print方法!");}}//...
  • 主要介绍了java中重载,继承,重写和多态的区别,需要的朋友可以参考下
  • 重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员。 2)重写是继承后重新实现父类的方法。  3)重载是在一个类里一系列参数不同名字相同的方法。  4)多态则是为了避免在父类里大量重载引起代码...
  • 1、什么是继承,继承的特点?子类继承父类的特征行为,使得子类具有父类的各种属性方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的...
  • 重载重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承多态、重载重写。继承(inheritance)简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,...
  • 1网上查询:多态与重载的区别: 这个没有可比较性。重载是多态的一种。 多态的形式有: 覆盖:输入参数一样,但对于不同的派生类有不同的实现, 其多态体现在运行阶段,也就是一个父类的指针可以指向不同的派生类...
  • 继承多态的区别

    万次阅读 多人点赞 2016-08-23 14:31:28
    想起有一次面试,一位技术部领导问"面向对象的基本特征说一下".于是我说了"封装,继承,多态",然后有啰啰嗦嗦的说了一些对...但是内心还是知道继承和多态是有一定的区别的,于是只好委婉的说"可能是我的理解还没达到过深的
  • 继承和多态有何区别

    千次阅读 2013-04-07 15:43:41
    在OODOOP中,多态组合优于继承多态的基础是继承,没有继承多态就无从谈起。 1、当对象类型不影响类中行为时,就要使用模板来生成这样一组类 2、当对象类型影响类中行为时,就要使用继承来生成这样...
  • 重载,继承,重写和多态的区别继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是为了避免在父类里大量重载引起代码臃肿且难于维护。 网上看到...
  • 继承:我们封装了数据,形成数据类型后。假如我们想要使用相同数据类型,这时候我们只需对原有数据类型进行“克隆”,再对其进行添加修改。 多态:无论在创建过程中,还是...请问一下:该怎样区别继承和多态

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,637
精华内容 1,454
关键字:

多态和继承的区别