📝 Java

1404篇技术文档
  为什么Java不是纯粹的面向对象语言

📅  最后修改于: 2020-02-15 13:19:16        🧑  作者: Mango

面向对象的纯语言或面向对象的完整语言是完全面向对象的语言,它支持或具有将程序内部的所有内容都视为对象的功能。它不支持原始数据类型(如int,char,float,bool等)。对于纯面向对象的编程语言,要满足七种素质。他们是:封装/数据隐藏继承多态性抽象化所有预定义类型都是对象所有用户定义的类型都是对象对对象执行的所有操作必须仅通过对象处公开的方法进行。示例:SmalltalkJava支持属性1、...

  了解Java中的类和对象

📅  最后修改于: 2020-02-15 13:25:17        🧑  作者: Mango

术语“面向对象”解释了将软件组织为结合了数据和行为的不同类型对象的组合概念。因此,面向对象编程(OOP)是一种编程模型,它通过提供一些规则来简化软件开发和维护。程序围绕对象而不是动作和逻辑进行组织。它增加了程序的灵活性和可维护性。由于OOP将数据及其行为(方法)带到单个(对象)位置,因此了解程序的工作变得更加容易。OOP的基本概念是:对象类封装形式继承多态抽象本文讨论Java中的对象和类。面向对象...

  Java多重继承

📅  最后修改于: 2020-02-15 13:32:19        🧑  作者: Mango

多重继承是面向对象概念的一项功能,其中一个类可以继承多个父类的属性。当在超类和子类中都存在具有相同签名的方法时,就会出现问题。在调用该方法时,编译器无法确定要调用的类方法,甚至无法在调用哪个类方法获得优先级时确定。为什么Java不支持多重继承?考虑下面的Java代码。它显示错误。输出:从代码中,我们看到,使用Test对象调用方法fun()会导致编译器蒙圈,不知调用Parent1的fun()还是Pa...

  Java继承类的对象创建

📅  最后修改于: 2020-02-15 13:33:20        🧑  作者: Mango

在继承中,子类获取超类属性。需要注意的重要一点是,当创建子类对象时,将不会创建超类对象的单独对象。仅创建具有超类变量的子类对象。这种情况不同于通常的假设,即构造函数调用意味着将创建该类的对象,因此我们不能盲目地说,每当执行一个类构造函数时,是创建该类的对象。输出:如我们所见,超类(水果)对象哈希码和子类(苹果)对象哈希码相同,因此仅创建了一个对象。该对象属于Apple(子类)类,因为当我们尝试打印...

  Java中的继承和构造函数

📅  最后修改于: 2020-02-15 13:34:58        🧑  作者: Mango

在Java中,不带参数的基类的构造函数在派生类构造函数中自动调用。例如,以下程序的输出为:但是,如果要调用基类的参数化构造函数,则可以使用super()进行调用。需要注意的是基类构造函数调用必须是派生类构造函数的第一行。例如,在下面的程序中,super(_x)的第一行是派生的类构造函数。输出:...

  Java中的接口和继承

📅  最后修改于: 2020-02-15 13:36:47        🧑  作者: Mango

先决条件:Java和多重继承一个类可以扩展另一个类,并且//可以实现一个或多个接口。输出;接口继承:接口可以扩展其他接口。输出:接口还可以扩展多个接口。输出:为什么Java中的类不支持多重继承,但可以通过接口实现?由于含糊不清,类不支持多重继承。在使用接口的情况下,没有歧义,因为直到Java 7的实现类才提供对方法的实现。从Java 8开始,接口也具有方法的实现。因此,如果一个类实现的两个或多个接...

  Java中将final与继承一起使用

📅  最后修改于: 2020-02-15 13:38:26        🧑  作者: Mango

先决条件:在Java中重写,继承final是Java中用于限制某些功能的关键字。我们可以使用final关键字声明变量、方法和类。将final与继承一起使用在继承期间,我们必须声明带有final关键字的方法,在所有派生类中,我们都需要对它们执行相同的实现。注意,在继承的初始阶段不必声明最终方法(始终为基类)。我们可以在任何我们想要的子类中声明最终方法,如果任何其他类扩展了该子类,则它必须遵循与该子类...

  使用super访问Java祖父母的成员

📅  最后修改于: 2020-02-15 13:40:28        🧑  作者: Mango

在Java中直接访问祖父母的成员:预测以下Java程序的输出。输出:编译器错误“ super.super.print();”行中有错误。在Java中,类无法直接访问祖父母的成员。虽然在C++中是允许的。在C++中,我们可以使用范围解析运算符(::)来访问继承层次结构中的任何祖先成员。在Java中,我们只能通过父类访问祖父母的成员。例如,以下程序可以编译并正常运行。输出:...

  可以重写Java中的私有方法吗

📅  最后修改于: 2020-02-15 13:41:51        🧑  作者: Mango

让我们首先考虑以下Java程序作为重写或运行时多态的简单示例。程序输出“派生类 fun”。基类引用’obj’引用派生类对象(请参见表达式“ Base obj = new Derived()”)。在obj上调用fun()时,将根据引用对象的类型而不是引用进行调用。使私有方法可以重写吗?预测以下程序的输出。我们收到编译器错误“ fun()在Base中具有私有访问权限”。因此,编译器尝试调用基类函数,而...

  对Java中派生类方法更严格的访问

📅  最后修改于: 2020-02-15 13:44:47        🧑  作者: Mango

在Java中,当派生类函数将重写基类函数,编译器错误赋予对派生类函数的更多限制访问。例如,如果在基类中有一个public void foo()函数,并且在派生类中将其重写,则foo()的访问说明符不能是派生类中的public。如果foo()是基类中的私有函数,则对其的访问说明符可以是派生类中的任何内容。请考虑以下两个程序。程序1编译失败,程序2运行正常。程序1程序2输出:...

  父类和子类在Java中具有相同的数据成员

📅  最后修改于: 2020-02-15 13:45:28        🧑  作者: Mango

父类的引用变量能保存其对象引用及其子对象引用。在Java中,方法是默认虚拟。非方法成员呢?例如,预测以下Java程序的输出。输出:如果父级引用变量持有子类的引用,并且父级和子级中都有“值”变量,则无论父级引用变量是否持有子类对象引用,它都将引用父类“值”变量。持有子类对象引用的引用将无法访问子类的成员(函数或变量)。这是因为编译器仅对方法使用特殊的运行时多态机制。可以使用父指针进行类型转换来访问子...

  Java中带有继承的对象序列化

📅  最后修改于: 2020-02-16 03:11:57        🧑  作者: Mango

先决条件:继承序列化是一种将对象的状态转换为字节流的机制。反序列化是相反的过程,其中字节流用于在内存中重新创建实际的Java对象。该机制用于持久化对象。关于继承有一些序列化的情况:情况1:如果超类是可序列化的,则子类是可自动序列化的。如果超类是可序列化的,则默认情况下,每个子类都是可序列化的。因此,即使子类没有实现Serializable接口(并且它的超类实现了Serializable),我们也可...

  用子类引用子类对象 vs 父类引用

📅  最后修改于: 2020-02-16 05:36:41        🧑  作者: Mango

先决条件:继承在Java中,所有非静态方法都基于基础对象的运行时类型,而不是指向该对象的引用的类型。因此,在对象的声明中使用哪种类型都没有关系,其行为将相同。如何引用子类对象有两种方法可以引用子类对象。两者都具有相对于其他的一些优点/缺点。声明在编译时可见的方法上可见。第一种方法(使用超类引用进行引用):超类的引用变量可用于引用从该超类派生的任何子类对象。如果方法存在于超类中,但被子类重写,则它将...

  Java程序的输出 20(继承)

📅  最后修改于: 2020-02-16 06:25:24        🧑  作者: Mango

先决条件Java继承预测以下Java程序的输出。程序1:输出:编译失败说明:因为A中没有no-arg构造函数,所以无法满足B的构造函数中隐含的super()调用。仅当该类没有显式定义构造函数时,编译器才会生成默认的no-arg构造函数。详细信息请参见:Java中的构造方法程序2:输出:说明:尽管无法重写final方法,但是在这种情况下,该方法是私有的,因此是隐藏的。结果是创建了一个新的、可访问的方...

  Java中的运算符

📅  最后修改于: 2020-02-16 06:33:57        🧑  作者: Mango

Java提供了许多类型的运算符,可以根据需要使用它们。根据提供的功能对它们进行分类。其中一些类型是:算术运算符一元运算符赋值运算符关系运算符逻辑运算符三元运算符按位运算符移位运算符运算符的实例优先与关联有趣的问题让我们详细了解一下它们。算术运算符:它们用于对原始数据类型执行简单的算术运算。*:乘法/:除法%:模数+:加法–:减法输出:一元运算符:一元运算符只需要一个操作数。它们用于递增,递减或取反...