重载概念问题
来源:1-1 继承的概念和特点
慕无忌4072121
2021-09-19 23:28:18
class Alpha{
public void bar(int..x){
}
public void bar(int x){
}
}
public class Beta extends Alpha
{
public int bar(String x){return 1;}//概念:访问修饰符是可以允许有变化的
* 但是要符合一定范围内变化————》
*例如当方法的返回值是void或者基本数据类型时,必须相同;当返回值是引用类型时
*可以时父类或者子类 .疑问是但是这个 父类是void 在子类重载父类时返回值是必须相同啊
public Alpha bar(int x){return 1};//继承上述概念 当父类和子类有继承关系,返回值是引用类型应该是可以编译
//但为啥不能通过编译
}
1回答
好帮手慕小蓝
2021-09-22
同学你好,同学的代码中还有语法问题:
1.Alpha类中第一个bar方法的可变长参数的语法形式是三个点,即“int...”,而同学写的是两个;
2.Beta类中报错的方法的返回值类型指定的是Alpha类型,而同学返回整数1,返回值与其约定的类型不匹配;
3.Beta类中报错的方法的返回值后面的分号写在了方法实现体大括号的外面。
根据同学所写的注释,同学对重载和重写的语法要求理解有些混淆:
1.重载:是指在同一个类中,两个或者多个方法间,方法名相同,形参列表不同(包含数据类型不同,参数数量不同,参数顺序不同),与返回值类型和修饰符无关;
2.重写:是指在继承关系中,子类具有和父类方法名相同,形参列表相同,返回值相同或子类方法的返回值类型为父类方法返回值类型的子类,子类方法访问修饰符较父类方法权限相同或者更宽。
所以同学这个报错的方法不满足重写也不满足重载。
如果同学还有疑问,可以继续提问,祝学习愉快~
相似问题