重载
先说一个重写的例子
package com.Overload;
import java.sql.SQLOutput;
public class OverloadText {
public static void main(String[] args)
{
System.out.println("nt");
System.out.println("hitai");
}
}
我们经常使用的这条与语句他就是printstream类,对应到我们自己创建的类那就是方法呀,
下面就来一个最简单的重载入门,虽说最简单但是也包含了一些小细节
我先写了calculate来计算他的和。
package com.Overload;
public class Text01 {
public double calculate(double num01,int num02)
{
return num01+num02;
}
public double calculate(int num01,double num02)
{
return num01+num02;
}
public double calculate(double num01,int num02,double num03)
{
return num01+num02+num03;
}
}
第一个calculate用了double类和int,第二个用了int和double类,注意他们作为参数传进去的顺序发生了变化,最后看第三个我用了两个double和一个int,就是参数数量不一样这么说可能不明显,
我再创建两个方法
public int calculate(int num01,int num02,int num03)
{
return num01+num02+num03;
}
public int calculate(int num01,int num02)
{
return num01+num02;
}
然后运用就是这样
注意第三个是因为二进制无法处理一些小数造成的。
通过上述例子我们可得出一些要
一.名字一样
二.参数循序不一样或类型不一样(注意不要说 int num02,int num01)这不叫顺序不一样
三.返回类型没用
他会提示你类已经定义了,并报错
重写
其实差不多是一样的,他的定义我翻译翻译下就是子类定义的方法完全覆盖(override)了父类的方法
那我就可以联想到要怎么覆盖呢?
首先肯定是方法名一样,再然后是传入参数一样,那返回类型要不要一样下面我在解释。
前两个相信很好理解,重点来解释下最后一个吧。
返回类型可以相同或是是其子类,怎么理解呢?我觉得就是子类总不可能去抢父类的东西吧
下面是实例
package com.Override;
import com.sun.org.apache.xpath.internal.objects.XObject;
public class OverrideText {
public Object say()
{
return null;
}
public String ok()
{
return null;
}
}
class AAA extends OverrideText
{
public String say()
{
return null;
}
}
class BBB extends OverrideText
{
@Override
public Object say() {
return super.say();
}
}
前面的对应我说的返回类型一样会是其子类,因为object是所有父类
而这个就因为int 是基本数据类型连类都不算肯定不行
就这样,还有就是不能缩小访问权限
总结
一.方法名,参数全一致
二.返回类型是原来的类或其子类但不能是父类且缩小访问权限即修饰符