-
2021-03-09 08:59:52
展开全部
java中对于继承,java只支持单继承。java虽然不e5a48de588b63231313335323631343130323136353331333365646262直接支持多继承,但是保留了这种多继承机制,进行改良。
单继承:一个类只能有一个父类。
多继承:一个类可以有多个父类。
为什么不支持多继承呢?
因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体。
但是java支持多重继承。A继承B B继承C C继承D。
多重继承的出现,就有了继承体系。体系中的顶层父类是通过不断向上抽取而来的。它里面定义的该体系最基本最共性内容的功能。
所以,一个体系要想被使用,直接查阅该系统中的父类的功能即可知道该体系的基本用法。那么想要使用一个体系时,需要建立对象。建议建立最子类对象,因为最子类不仅可以使用父类中的功能。还可以使用子类特有的一些功能。
简单说:对于一个继承体系的使用,查阅顶层父类中的内容,创建最底层子类的对象。
子父类出现后,类中的成员都有了哪些特点:
1:成员变量。
当子父类中出现一样的属性时,子类类型的对象,调用该属性,值是子类的属性值。
如果想要调用父类中的属性值,需要使用一个关键字:super
This:代表是本类类型的对象引用。
Super:代表是子类所属的父类中的内存空间引用。
注意:子父类中通常是不会出现同名成员变量的,因为父类中只要定义了,子类就不用在定义了,直接继承过来用就可以了。
更多相关内容 -
java中,一个类实现某个接口,必须重写接口中的所有方法吗?
2021-03-04 04:55:52如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体...不一定,关键要看子类是否是抽象类。
如果子类是非抽象类,则必须实现接口中的所有方法;
如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!
1、抽象类定义
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是 不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
2、抽象类特点
1)抽象类不能实例化。
2)抽象类可以包含抽象方法和抽象访问器。
3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
3、与具体类的比较
1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2)允许(但不要求)抽象类包含抽象成员。
3)抽象类不能被密封。
4、与接口的比较
1)相同点
a、不能实例化;
b、包含未实现的方法声明;
c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)
2)不同点
a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
d、抽象类是对象的抽象,然而接口是一种行为规范。
-
一个java类可以有多个父类吗?
2021-02-26 21:02:03一个java类不可以有多个父类,只可以有1个父类。Java类只支持单继承,不支持多继承,所以只可以有1个父类;接口可以多继承,所以接口可以有多个父类。Java类只可以有1个父类Java类只支持单继承,不支持多继承。也...一个java类不可以有多个父类,只可以有1个父类。Java类只支持单继承,不支持多继承,所以只可以有1个父类;接口可以多继承,所以接口可以有多个父类。
Java类只可以有1个父类
Java类只支持单继承,不支持多继承。也就是说只可以有1个父类。
但是接口可以多继承。接口可以有多个父类。
Java中父类的意思是:
某一个类B继承了类A则说A是B的父类。继承后B拥有A所有的公开方法和属性。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
推荐教程:《java教程》
-
在Python中,子类可以与父类在不同的文件中吗?
2021-02-05 09:02:33我目前有一个父抽象类,它有许多继承自它的子类。基本结构如下:import sqlite3import osfrom abc import ABCMeta, abstractmethodclass ParentClass(object):"""DOCSTRING"""__metaclass__ = ABCMetadef __init__...我目前有一个父抽象类,它有许多继承自它的子类。基本结构如下:import sqlite3
import os
from abc import ABCMeta, abstractmethod
class ParentClass(object):
"""DOCSTRING"""
__metaclass__ = ABCMeta
def __init__(self, base_path, state_name):
... other methods etc
class ChildClass1(ParentClass):
def __init__(self, base_path):
"""DOCSTRING"""
state_name = 'chromosome'
super().__init__(base_path, state_name)
...other methods etc
class ChildClass2(ParentClass):
def __init__(self, base_path):
"""DOCSTRING"""
state_name = 'ftszRing'
super().__init__(base_path, state_name)
...other methods etc
...other child classes that all inherit from the abstract parent class.
对我来说,将这些代码拆分为文件更有意义:
家长_类.py
儿童1级.py
child_类2.py
child_类3.py
等等
我可以这样做,只需将父类导入到子类中,但是拥有父模块是没有意义的。父类是抽象的,拥有父类的实例没有意义。另外,我喜欢事物当前被继承的方式,导入父类似乎会改变这一点。在
本质上,是否可以像上面那样将代码拆分为文件,而不必对代码进行重大更改?我唯一能弄明白如何做到这一点的方法是在每个文件中都有父类,但这似乎并不“正确”。。。。在
-
一个类可以实现多个接口,但只能继承一个抽象类。
2018-12-25 22:01:55而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个... -
Java中继承时的问题——子类和父类在(或不在)同一个包中的继承
2021-04-16 01:19:59上一次说到了Java中的继承,当然了,有些父类中的成员变量和方法就不能被子类继承,这是父类的...当子类和父类在同一个包中时,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继... -
查看一个类的所有子类和父类,并导出继承关系
2019-05-24 23:04:25目录 查看类的所有子类和父类 复制类继承关系或导出继承关系到文件 示例:DataAccessException展开后导出继承关系结果 查看类的所有子类和父类 ... Type Hierarchy,查看当前类...IntelliJ IDEA中,查看一个类的所... -
类的继承,创建个人类Person,再以该类为父类创建一个学生子类Student
2021-09-02 20:29:22新定义的类成为子类,子类(subclass)从父类(超类)(superclass)那边继承所有非私有成员作为自己的成员,通过在类的声明时使用extends关键字来创建一个类的子类,其格式如下: class Student extends Person {... -
继承了抽象类的子类需要把抽象类中的方法重写一遍吗?
2018-10-31 21:39:05继承了抽象类的子类需要把抽象类中的方法重写一遍吗? 抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写; 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补... -
java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢
2021-07-02 11:43:29上一篇说了java中多个子类实现同一个接口,怎么区分调的是哪一个实现类 java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢? 答: 抽象类无法实例化,实例... -
【面试题】如何判断一个类是不是另一个的子类
2016-10-16 15:41:38dynamic_cast用于将一个父类对象的指针转换为子类对象的指针或引用(动态转换) 向上转型:子类对象指针->父类指针/引用(不需要转换) 向下转型:父类对象指针->子类指针/引用(用dynamic_cast转型是安全的) 1 ... -
Java 判断一个类是否是另一个类的子孙类
2019-10-28 21:05:11定义三个类,关系如下 class A {} class B extends A {} class C extends B {} 测试三个方法instanceof、isInstance、isAssignableFrom 测试代码如下 A a = new C(); B b = new C(); C c = new C(); ... -
如何获取某个类的所有子类
2019-11-14 09:46:16如何获取某个类的所有子类引言解决方案(获取基础与IAnimal的所有子类)总结 引言 在我们写工厂类的时候,可能会根据不同的类型(type)生成不同的对象。但在工厂类初始化的时候,我们需要将某个类型的所有类全部初始化... -
接口只能通过一个子类进行实例化,那直接实例化一个子类对象不就可以了吗?
2016-10-31 03:14:06接口只能通过一个子类进行实例化,那直接实例化一个子类对象不就可以了吗? 为什么还要写成一个接口的形式呢? 比如说:List<String> lists = null; lists = new ArrayList(); 直接写成: ArrayList lists = new ... -
java中类的某个方法是不是只能由这个类及其子类的对象才可以调用
2016-01-20 14:08:01java中类的某个方法是不是只能由这个类及其子类的对象才可以调用 -
Java基础篇——类与子类
2020-06-04 19:52:28类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的。类是Java语言中最重要的“数据类型”。 子类:由继承得到的类叫子类。 引出新的概念:什么是继承? 继承: 继承就是子类继承父类的特征和... -
接口,抽象类;类可以实现多个接口,类只能继承一个类,接口可以继承多个接口
2019-07-15 14:56:35接口 接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。 -
子类与父类、子类与对象的关系、子类与父类同包时、不同包时的继承性
2020-02-11 16:28:201、利用继承这个机制,可以先定义一个共有属性的一般类,根据这个类再分别定义具有特殊属性的子类,子类继承了一般类的属性和方法,并根据自己的需求创建新的属性和方法; 2、使用Java关键字 extends 来定义一个类... -
父类子类有相同的变量声明
2021-03-14 17:12:081、类的继承知识点 (1)java不支持多重继承,也就是说子类至多只能有一个父类 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法 (3)子类中定义的成员变量和父类中定义的成员变量... -
【Java子类与继承(完整版)】
2021-03-25 22:53:12Java子类与继承1 子类与父类1.1 子类1.2 类的树形结构2 子类的继承性2.1 子类和父类在同一包中的继承性2.2 子类和父类不在同一包中的继承性2.3 继承关系(Generalization)的UML图2.4 protected的进一步说明3 子类与... -
类、超类和子类
2019-10-28 21:06:55is-a 关系是继承的一个明显特征。 extends是派生关键字,被继承的类被称为超类-superclass,基类-base class 或者父类parent class。 派生出来的类,被称为子类 subclass、派生类-derived class或者孩子类-child ... -
【Java基础知识总结】继承知识思维导图(一)类、父类、子类
2019-10-26 15:32:05继承(一) 类、父类、子类 首先列举出重要知识点导图: 1.关键字:extends 在Java继承中,使用的关键字就是extend,直接在子类后加上extends再加上父类的名称 子类就会拥有父类所拥有的属性与方法。 class A { ..... -
JAVA中的protected的访问权限只有在本类同包类和子类吗?
2020-03-19 20:02:59但是如果子类不在和父类不在同一个包中,那将会发生什么? 子类在其他包中访问 我们将父类和子类放在两个包中,如下所示: 父类: package com.falcon.auth.father; /** * @Author falcon * @Date 2020/3/19... -
设计一个Shape接口和它的两个实现类Square和Circle
2020-11-05 19:54:361)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果 2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回 在测试类中创建Square和... -
为什么一个对象可以用父类或接口声明,却用子类实例化 C#
2018-02-28 13:03:00基本概念这个实例是子类的,但是因为你声明时是用父类声明的,所以你用正常的办法访问不到子类自己的成员,只能访问到从父类继承来的成员。在子类中用override重写父类中用virtual申明的虚方法时,实例化父类调用该... -
python继承可以有几个父类-python支持多继承吗
2020-11-11 14:48:49大部分面向对象的编程语言(除了C++)都只支持单继承,而不支持多继承...当以一个子类有多个直接父类时,该子类会继承得到所有父类的方法,但是如果其中有多个父类包含同名方法会发生什么?此时排在前面的父类中的方... -
一个标准的java接口写法是怎样的?java对外接口怎么写?
2021-02-12 11:12:25在java中,接口是一切实现方法的来源,任何实现都离开不了接口,那么,一个标准的java接口写法是怎样的呢?下面,就让小编带你一起了解一下吧。(一)接口1、什么是接口。接口就是一些方法特征的集合。一些功能的定义。... -
Java 自定义异常类(Exception的子类)
2020-04-04 15:42:10定义了一个Word类,该类是单词类,根据单词的业务逻辑,单词中只能含有a~z、A~Z里的字符,但是在初始化Word对象可能会有含有其他字符,当含有其他字符时,就让程序报错。 如何自定义异常类? 所有异常的最终父类... -
private修饰的成员只能被本类中的成员函数或者友元函数访问,子类无法访问。
2020-03-16 11:21:26private修饰的成员只能被本类中的成员函数或者友元函数访问,子类无法访问。 即便是被子类继承 -
设计一个模拟器可以模仿动物的声音,具体要求如下: 1、设计Animal抽象类有两个抽象方法cry()和...
2020-04-14 22:34:18设计一个模拟器可以模仿动物的声音,具体要求如下: ...3、设计一个模拟器,该类有一个播发声音的方法playSound(Animal animal),该方法用于播放具体动物的声音和显示动物种类的名称,即利用参数Animal去调用子类重...