父类的功能无法满足了子类的需求,这时候我们需要进行方法的重写。
方法重写的前提: 必须存在继承的关系。
方法的重写:子父类存在着同名的函数称作为方法的重写。
方法重写要求:
1. 方法重写时,子父类的函数名与形参列表必须一致。
2. 方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。
3. 方法重写时,子类的返回值类型必须小于或者等于父类 的返回值类型。
4. 方法重写时, 子类抛出的异常类型必须小于或者等于父类抛出的异常类型。
方法重载: 在一个类中存在两个或者两个以上的同名函数称作为方法重载。
方法的重载要求:
1. 函数名一致,
2. 形参列表不一致(形参的个数或者是形参对应的类型不一致)
3. 与返回值类型无关。
extends
//动物 大类型
class Animal{
}
//鱼class Fish extends Animal{
}
//父类
class Fu{
String name;
public Fu(String name){
this.name = name;
}
public Animal eat() throws Exception {
System.out.println(name+"吃番薯...");
return new Animal();
}
}
//子类
class Zi extends Fu{
public Zi(String name){
super(name); //调用父类一个参数 的构造函数
}
//方法的重写
public Animal eat() throws RuntimeException {
System.out.println(name+"吃点开胃菜..");
System.out.println(name+"喝点汤...");
System.out.println(name+"吃点龙虾...");
System.out.println(name+"吃点鲍鱼...");
System.out.println(name+"喝点酒...");
System.out.println(name+"喝糖水...");
return new Animal();
}
}
class Demo10
{
public static void main(String[] args)
{
Zi zi = new Zi("大头儿子");
zi.eat();
}
}
// 需求: 使用java类描述一个学生、 基础班学生、 就业班学生, 学生都具备
学习的功能, 但是普通的学生学习的是: 马克思列宁主义, 基础班的学生学习的是
javase, 就业班的学生学习的是 (企业级应用开发)
//普通的学生
class Student{
String name;
int age;
//构造函数
public Student(String name,int age){
this.name= name;
this.age = age;
}
public void study(){
System.out.println(name+"在学习马克思列宁主义");
}
}
//基础班学生是属于学生中一种
class BaseStudent extends Student{
public BaseStudent(String name,int age){
super(name,age); //指定调用父类两个参数的构造方法
}
public void study(){
System.out.println(name+"在学习javase");
}
}
//就业班学生是属于学生中一种
class WorkStudent extends Student{
public WorkStudent(String name, int age){
super(name,age);
}
public void study(){
System.out.println(name+"在学习企业级应用开发..");
}
}
class Demo11
{
public static void main(String[] args)
{
BaseStudent s = new BaseStudent("张三",15);
s.study();
WorkStudent s2 = new WorkStudent("李四",19);
s2.study();
}
}