重载与重写

重写(Override):子类对父类的允许访问的方法的实现过程进程重新编写,返回值和参数类型都不改变

方法的重写规则:

1)参数列表、返回类型必须与重写方法相同

2)访问权限不能比父类中被重写的方法的访问权限更低

3)父类的成员方法只能被子类重写

4)声明为final的方法不能被重写

5)声明为static的方法不能被重写,但是能够被再次声明

6)子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法

      子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法

7)重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者

     比被重写方法声明的更广泛的强制性异常,反之则可以(例:父类抛出了IOException异常,子类重写就不能抛出一个                 Exception异常)

8)构造方法不能被重写

9)如果不能继承一个方法,则不能重写这个方法

class Animal{

public void eat(){

System.out.prinntln("吃东西")}

}

class Pig extends Animal{

public void eat(){

System.out.println("猪猪喜欢吃东西");

}

public void sleep(){

System.out.println("猪猪喜欢睡觉");

}

}

public  class Test{

public static void main(String[] args){

Animal p=new Pig;

p.eat();

p.sleep();//编译会出现错误,因为p的引用类型Animal没有sleep方法

}

}

重载(Overload):在一个类里面,方法名相同,而参数不同,返回类型可以相同也可以不同

重载规则:

1)被重载的方法必须改变参数列表和返回类型

2)被重载的方法可以改变访问修饰符

3)被重载的方法可以声明新的或更广的检查异常

4)方法能够在同一个类中或者一个子类中被重载

class Dog{
  public void bark(){
  System.out.println("狗叫");}
  
  public void bark(int n){
    if(n>10){
    System.out.println("狼叫");}
   }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值