~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:IDEA; JAVASE,Override
撰写时间:2020-08-18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
什么叫做重写:
子类重写父类的方法。就是先通过继承了父类,然后再进行修改父类中所拥有的方法。方法中的形参与方法名不能改变(生活栗子:儿子继承了父亲的一套房子,然后这套房不符合儿子的审美观,儿子再进行修改里面的内容。无论怎么改变也改变不了房子的面积大小,只能进行内饰的改变),也就是说方法体的只能对内容进行修改。
方法的重写需要符合下面的三个要点:
- 方法名、形参列表相同
- 返回值类型和声明异常类型,子类小于等于父类
- 访问权限,子类大于等于父类(访问权限不能比父类中被重写方法的访问权限更低(public>protected>default>private))
- 重写方法一定不能抛出新的检査异常或者比被重写方法声明更加宽泛的检査型异常。例如,父类的一个方法声明了一个检査异常 IOException,在重写这个方法时就不能抛出 Exception,只能拋出 IOException 的子类异常,可以抛出非检査异常。
需要用到的父类
package com.zqx.Dao;
public class Person {
public void a(){
}
}
需要用到的子类
package com.zqx.Dao;
public class Student extends Person{
@Override
public void a() {
super.a();
}
}
测试类
package com.zqx.Dao;
public class intDemo {
public static void main(String[] args) {
Horse h = new Horse();
h.run();
}
}
//父类
class Vehicle {
public void run(){
System.out.println("。。。。跑....");
}
public void stop(){
System.out.println("。。。。。。停止!");
}
public Person demo(){
return new Person();
}
}
//子类继承父类
class Horse extends Vehicle {
public void run(){
System.out.println("。。。。。。。飞驰。。");
}
//返回值类型和声明异常类型,子类小于等于父类。
//这个方法返回的是Object,明显是大于父类类型了,所以编译会有异常
// public Object demo(){
// return new Object();
// }
//子类小于父类类型,所以可行
public Student demo(){
return new Student();
}
}
要注意一下几条:
- 父类的成员方法只能被它的子类重写。
- 声明为 final 修饰符的方法不能被重写。
- 声明为 static 的方法不能被重写,但是能够再次声明。
- 构造方法不能被重写。
- 子类和父类在同一个包中时,子类可以重写父类的所有方法,除了声明为 private 和 final 的方法。
- 子类和父类不在同一个包中时,子类只能重写父类的声明为 public 和 protected 的非 final 方法。
- 如果不能继承一个方法,则不能重写这个方法。
更详细的可以到这个网站查看:http://c.biancheng.net/view/1000.html