精华内容
下载资源
问答
  • 2021-03-08 19:05:04

    函数也称为方法!

    继承:在java中使用extends关键字来表示继承关系。super用来继承父类方法和参数。

    继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为。

    注意事项:

    1、当一个类没有继承任何一个类时,系统默认继承Object。

    2、父类又被称为基类、超类、super类,子类又被称为派生类,这是由于翻译问题而导致的。

    3、Java的继承是单一性的。

    4、子类不能继承父类的构造方法,但是可以继承构造方法类的参数。

    5、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。但子类不能继承父类private修饰的属性和方法。

    语法格式:

    系统默认继承

    class 类名 extends Object{/*代码块*/}

    正确继承语法

    class 子类名 extends 父类名{/*代码块*/}

    错误继承语法

    class 子类名 extends 父类名,父类名{/*不支持多继承*/}

    创建类名为Father的父类:

    public class Father {

    int a;

    int b;

    int addSum;

    Father(int a,int b){ //父类的构造函数

    this.a=a;

    this.b=b;

    }

    void Cal(){ //父类自己的方法

    addSum=a+b;

    System.out.println(addSum);

    }

    public static void main(String[] args){

    Father f=new Father(2,2); //创建对象初始化

    f.Cal(); //父类调用父类的方法

    }

    }

    父类运行结果:4

    创建子类名为Son的子类:

    public class Son extends Father{

    Son(int a, int b) { //子类的构造方法

    super(a, b); //继承来自父类的参数

    }

    void son(){ //子类自己的方法

    super.Cal(); //子类调用父类的方法

    }

    public static void main(String[] args){

    Son s=new Son(3,3); //创建对象初始化

    s.son(); //子类调用子类的方法

    }

    }

    子类运行结果:6

    更多相关内容
  • 使用内部就可以多继承,严格来说,还不是实现多继承,但是这种方法可以实现多继承所需的功能,所以把它称为实现了多继承。下面就举个例子:假如有一个打电话Call,里面实现了一个可以打电话的功能的方法...

    在java中,原则上是不允许多继承的,也就是类与类之间只可以单继承。

    那么,有没有办法,可以在不使用接口的情况下实现多继承呢?  答案是可以。

    使用内部类就可以多继承,严格来说,还不是实现多继承,但是这种方法可以实现多继承所需的功能,所以把它称为实现了多继承。

    下面就举个例子:

    假如有一个打电话类Call,里面实现了一个可以打电话的功能的方法callSomebody(String phoneNum);

    一个发信息类SendMessage,里面实现了一个可以发信息功能的方法sendToSomebody(String phoneNum);

    还有一个手机类Phone,这个手机类想实现打电话和发信息的功能;我们知道可以用继承来获得父类的方法,但是只可以单继承呀,也就是说只可以实现其中一个类里面的方法,这并不满足我们的需求。

    接下来,我们就使用内部类,达到我们所需的目标了。

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    public classCall {public voidcallSomebody(String phoneNum){

    System.out.println("我在打电话喔,呼叫的号码是:" +phoneNum);

    }

    }

    Call类父类

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    classSendMessage {public voidsendToSomebody(String phoneNum){

    System.out.println("我在发短信喔,发送给 :" +phoneNum);

    }

    }

    SendMessage类

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    public classPhone {private class MyCall extendsCall{

    }private class MySendMessage extendsSendMessage{

    }private MyCall call = newMyCall();private MySendMessage send = newMySendMessage();public voidphoneCall(String phoneNum){

    call.callSomebody(phoneNum);

    }public voidphoneSend(String phoneNum){

    send.sendToSomebody(phoneNum);

    }public static voidmain(String[] args) {

    Phone phone= newPhone();

    phone.phoneCall("110");

    phone.phoneSend("119");

    }

    }

    Phone 类中 二个方法继承父类实现多继承

    这样就实现了callSomebody(String phoneNum) 和sendToSomebody(String phoneNum)这两个方法的功能呢。

    ————————————————

    版权声明:本文为CSDN博主「rocling」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/rocling/article/details/82350515

    展开全文
  • Java为什么不能继承多个父类

    千次阅读 2017-03-11 23:17:59
    Java为什么不能继承多个父类 多重继承是件很复杂、很容易产生问题的功能。它跟Goto语句一样,利弊交织。 以下分两部分叙述,第部分是Python多重继承遇到的麻烦,第二部分是Jav

    链接:https://www.zhihu.com/question/21476063/answer/18351313
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    多重继承是一件很复杂、很容易产生问题的功能。它跟Goto语句一样,利弊交织。
    以下分两部分叙述,第一部分是Python多重继承遇到的麻烦,第二部分是Java和Ruby如何折中多重继承需求。

    第一部分

    Python是支持多重继承的,但为了解决多重继承的方法查找顺序问题(被称为MRO),有一场苦难史:

    1. 传统模式

    直接使用深度优先算法(并且,从左向右),每个类选择其第一次出现的位置。比如

    class A:
      def save(self): pass
    class B(A): pass
    class C:
      def save(self): pass
    class D(B, C): pass

    作为D类的一个实例,它的成员寻找顺序是:D、B、A、C。
    但当碰到如下这样一个“菱形继承”就麻烦了:

    class A:
      def save(self): pass
    class B(A): pass
    class C(A):
      def save(self): pass
    class D(B, C): pass

    作为D类的一个实例,寻找顺序也是D、B、A、C,但调用其save方法时,到底是调用A中的呢?还是C中的呢?直观上看,应该是C。这里有产生矛盾了。

    2. Python2.2的new-style class模式

    Python2.2中引进了new-style class,说白了就像java一样,所有类都继承自最根本的object类。这就让“菱形继承”变成十分普遍,于是只能改变MRO策略。仍然使用深度优先搜索、从左向右,但是每个类选择其最后一次出现的位置。这样一来,对上面的“菱形继承”就处理比较完美了,形成的顺序是:D、B、C、A,越是公用基础类,越放在后面。但是,碰到交叉继承,就又懵了
    这里写图片描述
    这里,X和Y都继承自O,A继承(X,Y)(注意,有先后顺序),B继承(Y,X),再有个最下面的类继承(A,B)。
    按照上述算法出来的结果是:?、A、B、Y、X、O。这就有些奇怪了,明明A在B前,A继承的X在Y前,可为啥X的优先级比Y要低呢?

    3. C3算法

    1996年,一帮牛人写了一篇文章A monotonic superclass linearization for Dylan,提供了一个基于层级计算的线性MRO算法,被称为C3,整体上比较合理了。(算法不详说了)在2012年被加入了Dylan语言,2007年加入了Python2.3,此外还有Perl 6、Parrot等语言之中。这样虽说基本解决了计算问题,但多重继承本身就有很多让人疑惑的地方,比如:
    这里写图片描述

    第二部

    多重继承那么复杂,可单一继承又那么拘束,咋办呢?

    1. 接口继承

    Java就是那么做的,只允许单一继承类(方法的实现),但可以继承多个接口(方法的定义)。

    Java的接口继承功能,既实现了静态语言的多重继承性,又避免了多重继承的数据构造的冲突和类层次的复杂性。但是,我们并不能说接口是解决问题的完美方案。接口也有不能共享实现的缺点。本来只是为了跨越继承层次来共享代码,现在却需要另外生成一个独立对象,而且每次方法调用都要委派给这个对象,这实在是不太合理,而且执行的效率也不高。——《松本行弘的程序世界》

    2. Mix-in

    这是Ruby所推崇的,最初在Lisp中开始使用。规则如下:
    通常的继承都是单一继承。
    第二个以及两个以上的父类必须是Mix-in的抽象类(即不能单独生成实例,不能继承普通类)。
    这种规则下,既能够保持单一继承的结构,又能用Mix-in来共享方法的实现。

    结论

    对于多重继承的实现方式。其实并不应该像很多人说的那样使用实现多个接口实现的。如果这样,将产生大量的“CTRL C+CTRL V”,当你发现你大量的CTRL C+CTRL+V时,就几乎可以断定。你的代码写得不好了。首先,在Thinking in Java里面,作者已经指出——如果确定在不需要多态(把子类转为父类)的情况下,应该优先考虑组合而不是继承。至于原因,我认为是继承本身就是一件很复杂很麻烦很谨慎的事情。以致于多少大牛在吐槽面向对象?

    “实现上的继承就跟过度使用goto语句一样,使程序拧巴和脆弱。结果就是,面向对象系统通常遭受复杂和缺乏复用的痛苦。” — John Ousterhout( Tcl and Tk 的创始人) Scripting, IEEE Computer, March 1998

    “面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而其还有整个丛林。” — Joe Armstrong(Erlang语言发明人)

    展开全文
  • 知识点:理解继承的概念 、 掌握在... 继承反映的是之间的层次关系,生活中就有很多继承的例子,如:我们知道汽车有型号、颜色、排量、油耗等属性,有行驶和刹车方法。而公交车是汽车的种,除了有汽车基本的属性...

    知识点:理解继承的概念 、 掌握在程序中实现继承、 掌握 base 和 protected 关键字 、掌握如何调用父类构造方法 、 掌握继承的特性

     

    1、理解继承

              面向对象有三大特性:封装、继承和多态。我们学习过封装,封装是信息隐藏,我们定义类的过程就是对数据的一种封装,今天我们将重点讨论继承。

              继承反映的是类之间的层次关系,生活中就有很多继承的例子,如:我们知道汽车有型号、颜色、排量、油耗等属性,有行驶和刹车方法。而公交车是汽车的一种,除了有汽车基本的属性和方法外,还能载很多人。吊车也是一种汽车,它除了有汽车的特征外,还能吊货。汽车和公交车、吊车之间就是一种继承关系,公交车和吊车继承于汽车。生活中满足“是一种”关系的,基本都属于继承,比如还有:喜剧演员、话剧演员都是一种演员,冰箱、电视、空调都是一种电器,等等。

              如果一个类继承于另外一个类,如:公交车类继承于汽车类,我们把汽车类称为父类或基类,把公交车类称为子类或派生类,有时继承也叫派生,可以说汽车类派生出公交车类。

     

    1.

    展开全文
  • 1.存在一个类a,被类b继承,a是b的父类,b是a的子类 2.子类拥有弗雷德所有方法和参数,相当于将父类中的代码搬运到了子类中 3.子类相当于拥有父类中的左右代码,这就可以在此基础上作出修改和补充 4.子类继承父类后...
  • 文章目录Java语言基础-继承继承的特点继承的分类...单继承——–子类只能有一个直接父类 多重继承—–子类可以有多个直接父类 继承的写法 格式: 父类{ 父类的内容 } 子类 extends 父类{ 子类的内容 } 例: p
  • 实验四 Java类继承

    千次阅读 2021-03-15 00:49:26
    §4 Java类继承实验§4.1实验目的、内容及性质1.熟悉Java继承机制;2.掌握Java中成员变量和方法的访问控制; 3.熟悉方法或构造方法态性; 实验性质:验证、必做 实验学时:2学时 §4.2问题及思考1、为...
  • 继承:是一种由已有的类创建新类的机制。 1、利用继承这个机制,可以先...2、使用Java关键字 extends 来定义一个类的子类,来实现继承机制; 基本格式如下: class Student extends People { .... } 类 Stud...
  • java中一个类不能直接继承两个类比如说这样: class A extends B,C 不能这样写,因为java不支持多继承, 但是你可以像下面这样实现继承多个类 class A extends B class C extends A 这样C就同时继承了B和A两个类在...
  • 1.继承:指的是之间的关系,是一种什么是什么的关系,继承的功能是解决代码的重用问题,继承是一种创建新的方式python 中新建的可以继承一个多个父类(基类或超类)新建的类称为派生或子类对象之间相似...
  • java抽象 继承

    千次阅读 2021-03-08 06:02:32
    关于java抽象 继承的搜索结果回答抽象和接口的区别:默认的方法实现抽象可以有默认的方法实现完全是抽象的。接口根本不存在方法的实现。抽象中可以有已经实现了的方法,也可以有被abstract修饰的方法(抽象...
  • Python 的定义及继承

    千次阅读 2021-01-29 05:24:45
    ‘瓶子’是一类型的东西, ‘桌子上的那个瓶子’,比较具体 是一个对象)*一种用户自定义的类型*里面有很自定义的属性和方法(写代码的时候没有必要把所有的属性方法列出来,只需要列出有用到的就行)例子:Cat:...
  • 继承——多继承

    2021-05-27 12:40:06
    多继承一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承: 菱形继承多继承的一种特殊情况。 看着这张图,菱形继承会带来什么问题? 由模型构造,可以看出菱形继承有数据冗余和二义性的问题。...
  • 【Java篇】第话-Java继承

    千次阅读 多人点赞 2022-04-07 15:13:54
    不需要编写重复的代码,提高了代码的复用性,是面向对象程序设计的一个重要的特点,被继承叫做父类,由继承产生的新的叫做子类,一个父类可以通过继承产生多个子类,但是与C++不同的是Java语言不支持多重继承,...
  • Python——继承

    千次阅读 2021-12-08 10:26:44
    例 7-11 继承示例,子类继承父类方法: #ex0711.py 继承示例,子类继承父类方法 class Animal: num = 0 def __init__(self): print("父类 Animal") def show(self): print("父类 Animal 成员方法") ...
  • Java 子类继承父类方法

    千次阅读 2019-05-22 09:13:32
    例如 一个 B 类继承 A ,或称从A派生 B A 称为基类(父类), B 称为派生(子类) 类继承关系语法形式 Class 派生类名:基本名表 { 数据成员函数声明 } 基本名表 构成 访问控制 基类...
  • java如何继承类

    千次阅读 2021-03-10 10:03:22
    在Java语言中,实现继承使用extends关键字格式如下: (推荐学习:java课程)[public] class SubClass extends SuperClass{//体的定义}2、被继承类称为父类或超类或基类,而继承得到的类称为子类或派生。...
  • 父类强制转换为子

    千次阅读 2021-02-12 22:19:23
    因为子类型比父类型的内涵要丰富,无非就是属性更功能更强,所以要把父类型转换为子类型,需要强制,所以叫强制类型转换。那么,是不是只要是父类型的变量就可以转换为子类型呢?事实上不是,这里是有条件限制的.....
  • 什么是,在上篇内容已经讲过了,相信你看过之后,就能立马理解了。请参考:《为了给女朋友讲清楚Python中的,熬到凌晨两点我也不喊累!》 这篇内容,我们将继续探讨的博大。在的基本定义之后,就会有延伸...
  • 2.继承中子父类的概念 3.继承的作用 4. 查看继承父类   5.方法的复写 6.super()  7.__init__()方法  8. 派生属性 9.私有属性私有方法在继承中的表现 10.抽象   二、多继承 1、语法 3、...
  • 一个子类可以继承多个父类,就是多继承,并且拥有所有父类的属性和方法。 例如 孩子会继承自己的父亲和母亲的特征。 目录 (一)语法 (二)多继承注意事项 (三)钻石继承 (四)多继承中super本质 (一)...
  • 最近在看代码的时候遇到一个天坑,由于习惯性思维,可能大部分人都会掉近这个坑,所以拿出来记录一下 子类使用super调用的父类方法里,再调用父类的方法 先来看一段代码(该段代码只是作为测试用,正常编码时类名...
  • JAVA基础(继承性)

    2020-08-03 23:42:23
    1.java不允许多继承,一个子类只能有一个父类:(多继承:即一个子类可以继承多个父类) 2.java可以使用多层继承,即A继承B,B继承C, 3.子类继承父类的时候,会继承父类的所有操作,对于父类的私有操作表现为隐式...
  • java--继承多实现,接口多继承

    千次阅读 2021-10-13 15:58:32
    多继承:一个接口可以继承多个类,一个类可以实现(implements)多个接口。 类为什么只能单继承 1、java只支持单继承,如果子类继承的多个父类里面有相同的方法或者属性,子类将不知道具体继承哪一个,会产生歧义。 ...
  • 2018-11-19 回答21:抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸...抽象一般作为公共的父类为子的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只...
  • Python中多继承

    千次阅读 2019-05-21 18:02:49
    文章目录Python中的多继承多继承Python多继承实现多继承的缺点Mixin*思路1**思路2**思路3**思路4*Mixin Python中的多继承 Python2.2之前是没有共同的祖先的,之后,引入object,它是所有的共同祖先...
  • 关于父类子类继承关系

    千次阅读 2016-09-23 22:20:10
    继承的根类:大多都继承自 NSObject 类,所以在定义一个类时,要继承NSObject 类。 继承就是代码优化公共部分交给父类 例如: (Person是父类Worker 和Worker都继承了Person成为子
  • 关于继承父类的初始化方法

    千次阅读 2017-10-19 09:29:38
    python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么...
  • API中的每个类继承自名为java.lang.Object的类。 例如,每当您使用JFrame对象时,您就处于长串继承的末尾: java.lang.Object extended by java.awt.Component extended by java.awt.Container extended by ...
  • C++多继承(多重继承)详解

    千次阅读 2020-12-28 22:40:55
    在前面的例子中,派生都只有一个基类,称为继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生可以有两个或多个基类。多继承容易让代码逻辑复杂、思路混乱,一直备受...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,593
精华内容 61,837
关键字:

一个类继承自多个父类称为