覆写变长方法
public class Client {
public static void main(String[] args) {
// 向上转型
Base base = new Sub();
base.fun(100, 50);
// 不转型
Sub sub = new Sub();
sub.fun(100, 50);
}
}
// 基类
class Base{
void fun(int price,int... discounts){
System.out.println("Base......fun");
}
}
// 子类,覆写父类方法
class Sub extends Base{
@Override
void fun(int price,int[] discounts){
System.out.println("Sub......fun");
}
}
觉得上面的代码有什么错误吗。
其实是会报错的:但不是覆写的错误,@Override在这里是正确的,错误是在sub.fun(100, 50);,子类调用的时候会发现50只是一个int 不是int[],直接编译报错,所以父类能调用的方法,子类不一定能同样调用,呵呵。
分享到:
相关推荐
《编写高质量代码:改善java程序的151个建议》一共12章,第1~3章针对java语法本身提出了51条建议,例如覆写变长方法时应该注意哪些事项、final修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么地方等;...
- 了解并遵循Java的覆写规则,如变长参数的方法重载需谨慎。 - 注意自增操作符的副作用,避免潜在的并发问题。 - 尽量少用静态导入,避免命名冲突。 - 避免在构造函数中通过序列化为不变量赋值,以防止不期望的...
6.覆写变长方法也循规蹈矩。这是因为变长参数与数组,覆写的方法参数与父类相同,不仅仅是类型、数量,还包括显示形式,从而确保代码的可读性和可维护性。 7.警惕自增的陷阱。这是因为在 Java 中,自增操作符的工作...
7. **学习Java注意的地方** - 理解面向对象的概念和Java如何实现这些概念。 - 掌握基本语法,如变量、数据类型、控制结构等。 - 练习编写代码,理论结合实践。 8. **Java语法格式** - Java代码遵循严格的语法...
学习Java注意的地方 - **重视基础**:Java的基础知识非常重要,包括数据类型、控制结构、面向对象等概念。 - **实践编码**:通过编写实际的代码来加深理解。 - **阅读官方文档**:Java的官方文档提供了详尽的信息...
《编写高质量代码:改善java程序的151个建议》一共12章,第1~3章针对java语法本身提出了51条建议,例如覆写变长方法时应该注意哪些事项、final修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么地方等;...
方法的覆写发生在继承关系中,子类覆盖父类的方法,但覆写时要注意访问权限不能低于父类,且调用子类对象的覆写方法时,实际执行的是子类的方法。如果想调用父类被覆写的方法,可以使用`super`关键字。
- **JVM**:Java虚拟机是一个虚拟计算机,负责执行字节码,并提供了一个独立于硬件环境的运行时环境。 4. **JRE和JDK的区别** - **JRE**(Java Runtime Environment):包含Java虚拟机、Java核心类库和其他组件,...
- 继承是指一个类可以继承另一个类的属性和方法,实现代码的复用。 11. **子类访问父类和方法覆写** - 子类可以通过super关键字访问父类的成员。 - 方法覆写是指子类重新定义父类的方法。 12. **super关键字和...
可变参数允许一个方法接收任意数量的相同类型的参数,使用`...`表示。 **7. 数组简介** 数组是一种存储固定大小的同类型元素的数据结构。数组中的每个元素都有一个索引。 **8. 一维数组的声明与初始化** 一维数组...
1. 创建Service:在Android中,服务是一个没有用户界面的组件,可以通过继承`Service`类并覆写其生命周期方法来创建。主要的方法有`onStartCommand()`和`onBind()`,前者用于启动服务并处理命令,后者则与绑定服务...
- **解释**:当一个对象的equals()方法被覆写后,如果没有同时覆写hashCode()方法,可能会导致该对象在哈希表中的行为不符合预期。 - **实践建议**:确保equals()和hashCode()方法的一致性,以避免潜在的问题。 ###...
在Java中,String类型是不可变的,它有一个常量定义了最大长度,即`int MAX_VALUE = 2^31 - 1`,这是Java中int类型的最大值。 ### 构造方法 构造方法是一种特殊的方法,用于在创建对象时初始化对象的状态。构造...
不能从一个static方法内部直接调用非static方法,因为非static方法需要一个对象的上下文。 14. Integer与int的区别? Integer是int的包装类,用于表示int类型的对象。int是基本数据类型,而Integer是对象。 15. ...
##### 7、学习Java注意的地方 - **语法严谨**:Java是一门语法严谨的语言,必须遵循其规则。 - **面向对象**:掌握面向对象编程的基本概念和技术。 - **类库使用**:熟悉Java的标准类库及其使用方法。 - **编程实践...
- **JVM**(Java Virtual Machine):Java虚拟机是一个抽象的计算机,用于执行编译后的Java字节码。它是Java运行时环境的核心组件。 - **JRE**(Java Runtime Environment):Java运行时环境包含了JVM以及运行Java...
学习Java注意的地方** - 掌握基础语法和概念。 - 理解面向对象编程的基本原则。 - 经常练习编码,提高解决问题的能力。 - 阅读官方文档和高质量教程,扩展知识面。 **8. Java语法格式** Java具有严格的语法结构,...
- **Java** 支持方法重载 (overloading),即在一个类中可以有多个同名的方法,只要它们的参数列表不同。 - 重载不仅可以提高代码的可读性,还能使得类的设计更加灵活。 #### 24. synchronized 块和 synchronized ...