首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

继承、接口与多态的相关问题

对于成员变量(域),导出类将占有从基类承袭而来的成员变量和自己的成员变量(变量名字相一同也是如此),况且,将分摊不同的存储空间,这么,导出类将具有两个名目一样的域。...b Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。...c重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。 重写: a父类与子类之间的多态性,对父类的函数进行重新定义。...b若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。...c很好的封装 d每个类专注于一个任务 e通过获得和被包含对象的类型相同的对象引用,可以在运行时动态定义组合的方式 缺点:a结果系统可能会包含更多的对象 b为了使组合时可以使用不同的对象,必须小心的定义接口

1.5K20

Java面试-面向对象

多级继承:当一个类派生自一个类,而该类又派生自另一个类,即一个类有多个父类但处于不同级别时,这种继承类型称为多级继承。...方法重载: 在“方法重载”中,相同类的方法共享相同的名称,但是每个方法必须具有不同数量的参数或具有不同类型和顺序的参数。 方法重载是为该方法的行为“增加”或“扩展”更多。...: 在“方法重写”中,子类具有与父类相同的名称,名称和类型,参数和返回类型的方法。...您可以覆盖Java中的私有或静态方法吗? 您不能在Java中覆盖私有或静态方法。如果您在子类中创建具有相同返回类型和相同方法参数的类似方法,则它将隐藏超类方法;否则,它将隐藏超类方法。这称为方法隐藏。...什么是多重继承?Java支持吗? 如果子类从多个类继承属性,则称为多重继承。Java不允许扩展多个类。

71520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    VFP如何做一个超类,如此万物皆对象

    VFP 本身的 面向对象(OOP) 概念本质上是“不完整”的。一个典型的无法解决的问题就是,VFP 中没有“超类”的概念。 所谓“超类”,也就是说,其他所有的类都是从它继承而来。....有时,我们会面对这样的困境:如果 Container 类和 Text 类是从同一个超类继承而来,那么,这个设计会简化不少啊!...然后,你很苦逼的在 Container 类和 Text 类中,重复定义相同的自定义方法和自定义属性,如果足够幸运,代码仅仅只需写一次,然后复制到另一个类的同名方法中......若干天/年之后,当你需要修改它们的时候...现在是结束这种苦逼心情的时候了!我们在 VFP 中模拟一个所谓的“超类”! (超类一个特性是可以被继承表现为不同的可视化或非可视化的类。...* 子类具有一个名为 test 的自定义方法,它可以被 Container 类和 Text 类所共用 Procedure test *!

    28310

    Java中的对象是什么?【Programming】

    除了这些基本类型之外,Java 还允许程序员使用类声明创建新类型。类声明用于定义对象模板,包括它们的属性和行为。一旦声明了一个类,通常可以使用 new 关键字创建该类的实例。...从public Message开始有某种事情。 –这是一种方法 (方法定义对象的行为)。 –用于构造 Message类的实例。 –构造方法的名称始终与类相同,并且应理解为构造后将返回该类的实例。...如果在后面的代码中,给变量message分配了一个不同的值(Message 的另一个实例) ,并且没有创建引用该Message实例的其他变量,那么这个实例不再由任何东西使用,可以被回收。...在子类中重写方法——例如,String 类有自己特定的 hashCode ()方法,该方法将其意义识别为字符数组; 这是通过重写从 Object 继承的 hashCode ()方法来实现的 接口,允许描述必须由实现该接口的类提供的行为...原语或类的数组以及类的集合(例如列表,映射和集合) 方法的重载-具有相同名称和相似行为的几种方法具有不同的参数。 使用Java发行版随附的库。 接下来您想阅读什么吗? 让我们在评论中知道并继续关注!

    75700

    设计模式- 合成组合原则

    《Effective Java》 复合优先于继承 与方法调用不同的是,继承打破了封装性。 上面的问题都来源于对方法的改写动作。...新类中的每个实例方法都可以被调用被包含的已有实例中对应的方法,并返回它的结果。这被称为转发,新类中的方法被称为转发方法。这样的到的类会非常稳固,他不依赖于已有类的事现细节。...(6) 这种复用可以再运行时间内动态进行,新对象可以动态地引用与成分对象类型相同的对象。 一般而言,如果一个角色得到了更多的责任,那么可以使用合成/聚合关系将新的责任委派到合适的对象。...(3)从超类继承而来的实现是静态的,不可能在运行时间内发生变化,因此没有足够的灵活性。 由于继承复用有以上的缺点,所有尽量使用合成/聚合而不是继承来达到对实现的复用,是非常重要的设计原则。...四、从代码重构的角度理解 一般来说,对于违反里氏代换原则的设计进行重构时,可以采取两种方法:一是加入一个抽象超类;二是将继承关系改写为合成/聚合关系。

    52340

    100道最新Java面试题,常见面试题及答案汇总

    Q27:一个类可以有多个构造函数吗? 答案:是的,一个类可以有多个具有不同参数的构造函数,创建对象的构造函数取决于创建对象时传递的参数。 Q28:我们可以覆盖类的静态方法吗?...答案:可以定义重名的方法,但是其参数的数量和类型是不同的,调用哪个方法取决于传递的参数。 例如在下面的类中,我们有两个具有相同名称但不同参数的打印方法。...Q59:可以有两个方法,它们方法名和参数都相同,但返回值类型不同? 答案:相同的方法指的是方法名、参数以及返回类型都相同,因此返回类型不同的两个方法是可以并存的。 Q60:以下代码的输出是什么?...答案:Java不支持多重继承。 Q66:Java中,构造函数可以与类名不同吗? 答案:不可以,Java的构造函数必须与类名相同,如果不同,它将被视作普通函数。...Q97:Java的类型转换可以将所有其他类转换为布尔类型吗? 答案:不可以,其它原始类型不能转换为布尔类型,布尔类型也不能转换为其它原始数据类型。 Q98:方法的重写允许返回类型不同吗?

    5.2K21

    RefactoringGuru 代码异味和重构技巧总结

    除此之外,它们是空的。 被拒绝的继承 如果子类只使用从其父类继承的一些方法和属性,那么层次结构就不正常。不需要的方法可能只是不使用,或者被重新定义并发出异常。...具有不同接口的备选类 两个类具有相同的函数,但方法名不同。 更改的阻碍 这些异味意味着,如果你需要在代码的某个地方更改某些内容,那么你也必须在其他地方进行许多更改。因此,程序开发变得更加复杂和昂贵。...将查询与修改分开 问题:是否有一个方法可以返回一个值,但也可以更改对象内部的某些内容? 解决方案:将该方法分为两种不同的方法。正如你所料,其中一个应该返回值,另一个则修改对象。...处理泛化 抽象有自己的一组重构技术,主要关于沿着类继承层次结构移动功能、创建新的类和接口、用委托代替继承以及相反。 上移字段 问题:两个类具有相同的字段。...提取子类 问题:某个类具有仅在某些情况下使用的功能。 解决方案:创建一个子类,并在这些情况下使用它。 提取超类 问题:有两个类具有相同的字段和方法。

    1.9K40

    【Java SE语法篇】8.面向对象三大特征——封装、继承和多态

    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 生活中的继承 兔子和羊属于食草动物,狮子和老虎属于食肉动物。...2.2 继承的格式 在 Java 中通过关键字 extends 来声明一个类是从另一个类继承而来的,一般格式如下: class 父类 { } class 子类 extends 父类 {...,然后狗类和猫类继承这个类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码) 继承之后的代码:...3.2 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 3.3 多态存在的三个必要条件 继承 重写 重写:子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变...重写(覆盖)的规则: 方法名相同 参数列表相同【顺序、个数、类型】 返回值相同 父类引用指向子类对象 比如: Animal dog = new Dog(); 当使用多态方式调用方法时,首先检查父类中是否有该方法

    59410

    Java初学者需掌握的30个概念

    构造器特点:构造器可以有0个,一个或多个参数; 构造器和类有相同的名字;一个类可以有多个构造器;构造器没有返回值;构造器总是和new运算符一起使用。...8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法。      ...10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段。      ...例: public abstract string getDescripition       17.Java中的每一个类都是从Object类扩展而来的。      ...方法指针:java没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决方案。

    612100

    JAVA 1-6章测试题

    13、什么叫方法的重载?方法重载的意义? 答:方法的重载就是指在本类中方法名相同而参数列表不同。方法重载可以实现代码的复用。 14、return只能写在方法的结束位置吗?为什么?...1>类是相同属性和方法的封装体,因此类具有封装性; 2>子类可以在继承父类中能够继承的属性和方法的基础上,再增加自己特有的属性和方法,因此类具有继承性; 3>在一个类层次中,定义为父类的对象可被赋值为其任何子类的对象...,并根据子类对象的不同而调用不同的方法,因此类具有多态性。...答:1>都要求方法名相同,都可以用于抽象方法和非抽象方法之间 2>重写要求参数列表必须一致,而重载要求参数列表必须不一致 3>重写要求返回类型必须一致,而重载对此不做限制 4>重写只能用于子类重写父类的方法...2>子类方法必须和父类方法具有相同的方法名、参数列表和返回值 3>子类可以定义与父类的类方法同名的类方法,以便在子类中隐藏父类的类方法 4>父类中的类方法不能被子类重写成实例方法,而父类的实例方法也不能被子类隐藏为类方法

    84930

    苏州同程旅游学长给我的全面的面试知识库

    反序列化是从字节流中创建对象的反向过程。 12、我们可以在静态方法中使用“ this”命令吗? 我们不能在静态方法中使用’This’,因为我们只能在静态方法中使用静态变量/方法。...只读仅在我们要在运行时分配值时使用。 14、什么是接口类?举一个例子 接口是仅具有公共抽象方法的抽象类,并且这些方法仅具有声明而不具有定义。这些抽象方法必须在继承的类中实现。...如果我们强制将密封类指定为基类,则会发生编译时错误。 18、什么是方法重载? 方法重载是在同一个类中创建多个具有相同名称且具有唯一签名的方法。编译时,编译器使用重载解析来确定要调用的特定方法。...在数组中,我们只能具有相同类型的项目。比较时,数组的大小是固定的。数组列表类似于数组,但是没有固定的大小。 20、可以重写私有虚拟方法吗? 不可以,因为在课外无法访问它们。...可以使用参数的不同数据类型,参数的不同顺序和参数的数量来重载方法。 38、为什么不能为接口内的方法指定可访问性修饰符? 在接口中,我们有没有方法定义的虚拟方法。所有方法都将在派生类中被覆盖。

    3K20

    学习Java需吃透这些基本概念

    ,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段; 4、多态:在java中,对象变量是多态的;需要注意的是java中不支持多重继承; 5、类之间的关系...: use-a :依赖关系 ; has-a :聚合关系 ; is-a : 继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法; 6、构造对象使用构造器:构造器是一种特殊的方法...,它的作用是构造对象并对其初始化, 构造器特点:构造器可以有0个,一个或多个参数 ; 构造器和类名称是相同的; 一个类可以有多个构造器; 构造器没有返回值; 构造器一定是和new运算符一起使用的; ?...,所有的java包都在java和javax包层次内; 8、重载:当多个方法具有相同的名字而含有不同的参数时,这时就发生了重载,编译器会选出调用哪个方法; 9、健壮特性:Java采取了一个安全指针模型,能有效防止重写内存和数据崩溃...网络配图 13、动态绑定:这是Java调用对象方法的机制; 14、Java中的每一个类都是从Object类扩展而来的; 15、内部类:一个内部类的定义是定义在另一个内部类中; 以上只列出了比较重要的,必须掌握的知识点

    810100

    Java核心-面向对象(中)

    b、在使用计算器进行加减乘除时,不用关心内部的加法器工作原理和乘法电路是怎样实现的,只需要根据按键代表的功能使用即可。2、封装优点我们可以从封装的基本概念中挖掘出封装具有如下优点。...二、继承1、概念继承(Inheritance),是指子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。...}}3、继承关键字3.1 实现继承1)extends:继承类(表示一个类是从另一个类继承的),其中子类是从另一个类继承的类,超类(父类)是从其继承的类。...方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。注:方法签名不包括方法的返回类型、返回值和访问修饰符。2)子类方法的返回值类型和父类方法的返回类型相同或者是其子类。...方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同。方法重写是子类存在方法与父类的方法名相同, 且参数的个数与类型、 返回值都一样的方法。

    24912

    java面向对象相关知识

    答:因为类是继承Object类,默认的是继承Object的方法,而Object方法的equals是返回的对象的地址。 hashCode()和equals()方法有什么联系?...(该原则说得直白和具体一些就是声明方法的参数类型、方法的返回类型、变量的引用类型时,尽可能使用抽象类型而不用具体类型,因为抽象类型可以被它的任何一个子类型所替代。...任何时候都不要继承工具类,工具是可以拥有并可以使用的,而不是拿来继承的。) 迪米特法则又叫最少知识原则,一个对象应当对其他对象有尽可能少的了解。...重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问...当从外部类继承的时候,内部类是不会被覆盖的,它们是完全独立的实体,每个都在自己的命名空间内,如果从内部类中明确地继承,就可以覆盖原来内部类的方法。

    57310

    C++系列笔记(五)

    constructor 输出表明,由于采用了多继承,且 Platypus 的全部三个基类都是从 Animal 类派生而来的,因此第38行创建Platypus实例时,自动创建了三个Animal实例。...}; class Derived2 : public virtual Base { //members and funnctions }; 在继承层次结构中,继承多个从同一个类派生而来的基类时,...可将复制构造函数声明为虚函数吗 根本不可能实现虚复制构造函数,因为在基类方法声明中使用关键字virtual时,表示它将被派生类的实现覆盖,这种多态行为是在运行阶段实现的。...注意到myFishes数组能够存储不同类型的对象,这些对象都是从Fish派生而来的。这太酷了,因为为本书前面的大部分数组包含的都是相同类型的数据,如int。...如果这还不够酷,您还可以在循环中使用虚函数Fish::Clone将其复制到另一个Fish*'数组(myNewFishes)中,如第48行所示。

    68930

    Java新手入门必须掌握的30个基本概念

    Java与其他语言所不同的是程序运行时提供了平台的独立性,称许可以在windows,solaris,linux其他操作系统上使用完全相同的代码。...构造器特点:构造器可以有0个,一个或多个参数; 构造器和类有相同的名字;一个类可以有多个构造器;构造器没有返回值;构造器总是和new运算符一起使用。   ...8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法。   ...10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段。   ...例: public abstract string getDescripition    17.Java中的每一个类都是从Object类扩展而来的。

    35920

    面向对象的7种设计原则(4)-合成聚合复用原则

    如果两个类是“Has-a”关系应使用合成、聚合,如果是“Is-a”关系可使用继承。"Is-A"是严格的分类学意义上定义,意思是一个类是另一个类的"一种"。...为什么使用合成/聚合复用,而不使用继承复用? 在面向对象的设计里,有两种基本的方法可以在不同的环境中复用已有的设计和实现,即通过合成/聚合复用和通过继承复用。两者的特点和区别,优点和缺点如下。...这种复用可以再运行时间内动态进行,新对象可以动态地引用与成分对象类型相同的对象。 一般而言,如果一个角色得到了更多的责任,那么可以使用合成/聚合关系将新的责任委派到合适的对象。当然,这种复用也有缺点。...继承复用 继承复用通过扩展一个已有对象的实现来得到新的功能,基类明显的捕获共同的属性和方法,而子类通过增加新的属性和方法来扩展超类的实现。继承是类型的复用。...从超类继承而来的实现是静态的,不可能在运行时间内发生变化,因此没有足够的灵活性。 由于继承复用有以上的缺点,所有尽量使用合成/聚合而不是继承来达到对实现的复用,是非常重要的设计原则。

    1.3K40

    检查Python对象

    于是在计算机术语中,对象是拥有标识和值的事物,属于特定类型、具有特定特征和以特定方式执行操作。并且,对象从一个或多个父类继承了它们的许多属性。...值得注意的是,可能有多个变量引用同一对象,同样地,变量可以引用看起来相似(有相同的类型和值),但拥有截然不同标识的多个对象。...,还可以使用 isinstance() 函数测试对象,以确定它是否是某个特定类型或定制类的实例: 清单 7....在类这一级别,可以根据一个类来定义另一个类,同样地,这个新类会按照层次化的方式继承属性。Python 甚至支持多重继承,多重继承意味着可以用多个父类来定义一个类,这个新类继承了多个父类。...issubclass() 函数使我们可以查看一个类是不是继承了另一个类: 清单 8. 您是我母亲吗? >>> print issubclass.

    1.3K100

    Java基础系列(十七):Object类(上)

    概述 在Java中,只有基本数据类型不是对象,比如,数值,布尔和字符类型的值都不是对象。而其余的数据类型都是继承自一个名为Object的类,这个类是所有类的始祖,每个类都是由Object类扩展而来。...如果一个类继承自Object类,我们可以将 extendsObject给省略掉,如果在一个类的定义中没有明确的指出哪个是它的父类,那么Object类就认为是这个类的父类。...equals方法 Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。...使用==比较基本类型域。使用equals比较对象域。如果所有的域都匹配,就返回true;否则返回false。...提示:对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否想等。

    38830

    2020最全Java面试题--基础篇

    不,main只是方法的名称。 一个类文件中可以有多个具有相同名称main的方法。 它不是Java中的关键字。 9....this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用 2. 解释一下继承的概念 继承是面向对象编程概念中一个很重要的概念。一些对象具有某些特征和行为。...通过使用继承,我们可以将常见的行为和特征放在基类(父类)中。 然后所有具有共同行为的对象都将从该基类继承。类似于“is-a”关系。 继承增加代码的可重用性、方法重写和多态性。 3....多重继承意味着一个类可以从两个或者多个父类中继承行为。 多重继承的问题在于,对于同一个方法,两个父类可能具有不同的实现。因此,他们有不同的方式来做同一件事。在这种情况下,子类该选择哪种实现?...Object.clone()方法用于在Java中创建对象的完全拷贝。 它的行为就像复制一个构造函数。 它创建并返回对象的副本,该对象具有相同的类,并且所有字段的值与原始对象的值相同。

    58331
    领券