重写和重载

重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,就要通过重写覆盖父类方法。
重写的规则

  • 返回类型,参数列表必须完全与被重写方法的相同
  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
  • 父类的成员方法只能被它的子类重写
  • 构造方法,声明为final,static的方法不能被重写。

需要注意的是,父类声明变量指向子类实例,该父类变量不能调用父类不存在的变量和方法,否则会编译错误 。

class A{
public void f1(){
System.out.println("f1");
}
}
class B extends A{
public void f1(){
System.out.println("sub f1");
}
public void f2(){
System.out.println("sub f2");
}
}
public class Test{
public static void main(String args[]){
A a = new A();
A b = new B();
a.f1();
b.f1();
b.f2();//这里会报错,因为父类没有f2()
}
}

重载

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
重载的好处主要是一种方法可以支持多种输入方式。
举个例子:
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
}

这样,test()方法就可以接受无参和整型两种输入,产生不同响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值