java 重载和重写区别

重载改变的是参数个数,参数的类型但不改变参数的顺序,与返回值无关

例如

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());
}


}

发生继承重载,这需要注意,因为B继承父类A的方法,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());
}


}

子类向上转型,父类引用指向子类对象,调用子类复写父类的方法

如果子类不复写父类的方法,则调用父类的方法,子类扩展的所有方法丢失






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值