面向对象特征之继承,方法的重写
1.面向对象的特征:继承性
2.通过 Class A extends B 实现类的继承
子类:A 父类(基类 SuperClass):B
3.子类继承父类后,父类声明的属性 方法,子类就可以获取到。
注意:当父类中有私有的属性或者方法时,子类是可以获取的到,只是由于封装性的设计
使得子类不能直接调用。
子类除了继承父类的结构之外,还可以定义自己的特有成分
extends:子类是对父类功能的扩展
4. Java中只能单继承:一个类只能继承一个父类,反之,一个父类可以有多个子类
5.父子类是相对的概念
Student:
package com.aff.java; public class Student extends Person { /* * private String name; private int age; */ private String schoolName; public Student() { } public Student(String name, int age) { // this.name = name; // this.age = age; this.setName(name); this.setAge(age); } /* * public String getName() { return name; } * * public void setName(String name) { this.name = name; } * * public int getAge() { return age; } * * public void setAge(int age) { this.age = age; } * * public void eat() { System.out.println("吃饭"); } * * public void walk() { System.out.println("走路"); } */ public void info() { System.out.println("学生"); } }
Worker:
package com.aff.java; public class Worker extends Person { /* * private String name; private int age; * * public String getName() { return name; } * * public void setName(String name) { this.name = name; } * * public int getAge() { return age; } * * public void setAge(int age) { this.age = age; } * * public void eat() { System.out.println("吃饭"); } * * public void walk() { System.out.println("走路"); } */ }
Person:
package com.aff.java; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void eat() { System.out.println("吃饭"); } public void walk() { System.out.println("走路"); } }
Graduate:
package com.aff.java; public class Graduate extends Student { public void show() { System.out.println("我想芳芳了"); } }
TestExtends:
package com.aff.java; public class TestExtends { public static void main(String[] args) { Student s = new Student(); s.eat(); Worker w = new Worker(); w.eat(); Person p = new Person(); p.eat(); Graduate g = new Graduate(); g.eat(); g.info(); g.show(); } }
输出结果:
吃饭
吃饭
吃饭
吃饭
学生
我想芳芳了
二:方法的重写
1.前提:有子类继承父类
2.子类继承父类以后,若父类的方法对子类不适用, 那么子类可以对父类的方法重写(override overwrite)
重写规则: 1.要求子类方法的 返回值类型 方法名(参数列表)与父亲的方法一样
2.子类方法的修饰符不能小于父类方法的修饰符
3.若父类方法抛异常,那么子类抛的异常类型不能大于父类的
4.子父类的方法必须同为static或同为非static的
All that work will definitely pay off