重载改变的是参数个数,参数的类型但不改变参数的顺序,与返回值无关
例如
1.public void get(){}
2.public void get(int a){}//参数个数不同
3.public void get(int a,int b)//参数个数不同
4.public void get(int a,double b){}//参数个数和参数类型
5.public int get(int a,double b){}//返回值类型为int不同,不为4的重载,但为1,2,3的重载
下面为继承重载
public class A {
public int getA()
{
return 4;
}
}
public class B extends A {
public int getA(int a)
{
return a;
}
public static void main(String[] args) {
A a=new A();
System.out.println(a.getA());
B b=new B();
System.out.println(b.getA());
}
}
重写与继承相关
重写必须与父类方法一致,包括返回值类型,类型,参数,,子类和父类方法除了返回值大小不同,其他的一模一样
例子如下
public class A {
public int getA()
{
return 4;
}
}
public class B extends A {
public int getA()
{
return 5;
}
public static void main(String[] args) {
A a=new A();
System.out.println(a.getA());
B b=new B();
System.out.println(b.getA());
}
}
输出5,4
总结
父类调用父类的方法
子类调用子类覆盖父类的方法
如果没有覆盖
则调用父类的方法
返回值或者参数列表不同则不为重写
附:重写要注意权限问题.
2,向上转型复写问题
向上转型
public class A {
public int getA()
{
return 4;
}
}
public class B extends A {
public int getA()
{
return 5;
}
public static void main(String[] args) {
A a=new B();
System.out.println(a.getA());
}
}
子类向上转型,父类引用指向子类对象,调用子类复写父类的方法
如果子类不复写父类的方法,则调用父类的方法,子类扩展的所有方法丢失