当前位置 博文首页 > YHSevenWater的博客:Java的继承性和方法重写
A:子类 subclass
B:父类 superclass
特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
方法的声明:??权限修饰符??返回值类型??方法名(形参列表)(throws??异常的类型){
??????????????????????????????????//方法体(不同)
???????????????}
统一称呼:子类中的叫重写的方法;父类中叫被重写的方法。
特殊情况:子类不能重写父类中声明为private权限的方法
1.父类被重写的方法返回值类型是void,则子类重写的方法返回值类型只能是void;
2.父类被重写的方法返回值类型是A类类型,则子类重写的方法的返回值类型可以是A类或A类的子类;
3.父类被重写的方法返回值类型是基本数据类型(比如:int),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是int);
4.子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型。
子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static的(不是重写)
package com.java.oop3;
/**
* @ClassName Person
* @Description: 人类
* @Author Seven
* @Date 2021/7/28 18:59
* @Version 1.0
**/
public class ManKind {
private int sex; //性别
private int salary; //薪资
public ManKind(){
}
public ManKind(int sex, int salary) {
this.sex = sex;
this.salary = salary;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public void manOrWoman(int sex){
if(sex == 1){
System.out.println("man");
}else{
System.out.println("woman");
}
}
public void employee(int salary){
if(salary == 0){
System.out.println("no job");
}else{
System.out.println("job");
}
}
}
Kids类继承于Person类:
package com.java.oop3;
/**
* @ClassName Kids
* @Description: 小孩类继承人类
* @Author Seven
* @Date 2021/7/28 19:43
* @Version 1.0
**/
public class Kids extends ManKind{
private int yearsOld; //年龄
public Kids(){
}
public Kids(int yearsOld){
this.yearsOld = yearsOld;
}
public int getYearsOld() {
return yearsOld;
}
public void setYearsOld(int yearsOld) {
this.yearsOld = yearsOld;
}
public void printAge(int yearsOld){
System.out.println(this.yearsOld);
}
}
Kids继承于Person类,并重写Person父类中的方法employee():
package com.java.oop3;
/**
* @ClassName Kids
* @Description: 小孩类,继承人类并实现employee()方法的重写
* @Author Seven
* @Date 2021/7/28 19:43
* @Version 1.0
**/
public class Kids extends ManKind{
private int yearsOld; //年龄
public Kids(){
}
public Kids(int yearsOld){
this.yearsOld = yearsOld;
}
public int getYearsOld() {
return yearsOld;
}
public void setYearsOld(int yearsOld) {
this.yearsOld = yearsOld;
}
public void printAge(int yearsOld){
System.out.println(this.yearsOld);
}
@Override
public void employee(int salary) { //方法的重写
System.out.println("Kids should study and no job");
}
}
package com.java.oop3;
/**
* @ClassName KidsTest
* @Description: 测试类
* @Author Seven
* @Date 2021/7/28 19:46
* @Version 1.0
**/
public class KidsTest {
public static void main(String[] args) {
Kids someKid = new Kids();
someKid.setSex(1);
someKid.setYearsOld(18);
someKid.employee(0);
}
}
继承的结果:
方法重写的结果: