Java 中的重载和重写
来源:Medium 在本文中,您将了解 Java 语言中的重写和重载方法。由于这两个术语经常相互混淆,因此有必要清楚地了解每种方法的目的及其应用选项。超载
在Java中,在同一个类中或超类与子类之间使用多个同名但参数不同的方法称为重载。为了避免这种情况,使用单一方法而不是执行类似操作的许多方法。我们用一个例子来解释一下:public class MethodOverloading {
public static void main(String[] args){
MethodOverloading operation = new MethodOverloading();
operation.mod(12,4);
operation.mod(12.4,4.2);
}
void mod(double a, double b){
System.out.println(a % b);
}
void mod(int a, int b){
System.out.println(a % b);
}
}
在此代码中,操作方法被重载。具有相同名称的方法接受不同类型的参数。模式的选择是针对int和double参数单独确定的。当我们运行程序时,operation.mod (12,4)运行void.mod (int a, int b),operation.mod (12.4,4.2)运行void.mod (double a, double b)。
压倒一切
在Java中,我们可以创建一个超类和继承该类的子类。这些子类可以重写和替换它们继承的父类的方法。这是使用覆盖方法完成的。通过一个例子可以更好地理解这一点:public class MethodOverriding {
public static void main(String[] args) {
Cat cat = new Cat();
cat.sound();
Bee bee = new Bee();
bee.sound();
}
}
class Animal {
void sound(){
System.out.println("Animal sounds");
}
}
class Cat extends Animal{
@Override
void sound() {
System.out.println("Cat : meow meow");
}
}
class Bee extends Animal{
@Override
void sound() {
System.out.println("Bee : buzz buzz");
}
}
此代码示例创建一个名为Animal的超类以及从该超类继承的名为Cat和Bee 的子类。超类中的 声音方法被重写。注意:重载方法的分离发生在编译阶段。重写方法的分离发生在运行时。
5 个你不知道的 Java 方法
来源:Javarevisited Java 开发生态系统有许多可用的工具,程序员可以在其程序中导入和使用。其中包括内置类和方法。它们显着简化了程序员的工作,使他们能够更好地理解和编写代码。每个开发人员都应该了解它们。这里有 5 种 Java 方法,虽然很少见,但在您的工作中非常有用。1. 精确递减
decrementExact()是Math类中的一个基本 Java 函数,它将给定参数(数字)减/减 1 并返回结果。该函数与incrementExact()函数相反。例如,如果给定参数为 11,则结果为 10。如果递减参数导致其数据类型溢出,则会引发异常。因此,使用此函数时一定要小心,尤其是对于大量数据。通常,该函数使用整数。句法:Math.decrementExact(number);
例子:
System.out.println(Math.decrementExact(11));
// Output: 10
2.getAsDouble
getAsDouble()是属于OptionalDouble类的方法。OptionalDouble对象是一个可以保存双精度数的对象。类中的方法可用于对对象中存在的 double 值进行操作,或指示根本不包含该 double 值。 getAsDouble()就是这样的方法之一,它返回双精度值(如果存在)。否则,将引发NoSuchElementException。句法:OptionalDoubleObject.getAsDouble();
例子:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0
3. 绝对精确
absExact()方法与Math类中的abs()函数类似。它返回数字的绝对值,即该数字的正值,无论其符号如何。唯一的区别是,只有在精确表示为其数据类型(int或long)时,它才会执行此操作。如果返回值的结果超出了原始数据类型,则抛出ArithmeticException。句法:Math.absExact(number);
例子:
System.out.println(Math.absExact(-11));
// Output: 11
4.结束于
endsWith()是一个内置的字符串方法,它根据给定的字符串是否以参数中的某个后缀(结束词/字符串)结尾,返回一个布尔值。此方法与许多开发人员可能熟悉的startsWith()方法相反。句法:String.endsWith(String suffix);
例子:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/
5.divide未签名
divideUnsigned()方法是Integer类中的一个方法,允许您将两个数字相除并返回相除结果。与常规有符号整数相比,无符号整数只能表示正数。无符号整数和有符号整数在其范围内具有相同数量的数字(范围的大小为 65,536 个数字)。但是,由于无符号整数不能为负数,因此它们在正范围内的最大值远高于常规有符号整数的最大值。为了简化这一点,我们可以看一下有符号和无符号字节的示例。字节的范围为 256 个数字。常规字节的值可以是 -128 到 127。但是,无符号字节的值可以是 0 到 255。否则,该函数的工作方式与常规除法完全相同。句法:Integer.divideUnsigned(int dividend, int divisor);
例子:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2
结论
以下是本文讨论的函数和方法的总结:-
decrementExact - 将给定数字减少/减去 1
-
getAsDouble -OptionalDouble函数的一部分,返回具有双精度值的数字或指示其不存在
-
absExact - 如果数字可以表示为原始数据类型,则返回数字的绝对值
-
endsWith() - 根据给定字符串中是否存在指定的后缀返回一个布尔值
-
divideUnsigned() - 执行普通除法,返回数字相除的结果
GO TO FULL VERSION