Java 继承
声明:本文记录基于 JDK 8(8u211)的继承使用规则如果存在错误,请发邮件至2623574740@qq.com 联系我
创作时间:2023-09-17 17:07:01
创作情况:失业第47天,地处成都金牛区
创作者:一口吃不成胖子
- 抽象类和普通类均可被继承,用final修饰的类不能被继承
- 用final,static修饰的类属性均可被继承
- 用final修饰的类方法可被继承;但不能重写,也不能在子类中申明同样的方法,它只能被子类对象调用
- static修饰的类方法可以被继承,但无法重写(加@Override标签报错),子类可以写一个与父类相同的方法[这不是重写]。
- 一个类仅能继承一个父类,一个类可以被多个类继承
父类
父类👨
/**
* 抽象类 Animal作为父类
* */
abstract class Animal {
public String name;// 普通类属性,可以被继承
public final String type="pet";//常量,被继承,但不能被对象修改
public static int age = 0;//静态变量,被继承且所有子类共享此变量,若某子类中申明此变量则此子类对象不再共享此变量
/**
* 常量方法,被继承,但无法重写
* */
public final void desc(){
System.out.println("这是动物类");
}
/**
* 静态方法,被继承,子类可写与父类相同的方法(不是重写)
* */
public static void trait(){
System.out.println("这是动物类中的一个子类");
}
/**
* 抽象方法,子类必须实现(不是重写)
* */
abstract public void bark();
}
子类
- 拥有父类的被final,static,public修饰的属性
- 拥有父类的被final,static,public修饰的方法
- 实现抽象类的抽象方法
- 父类中final修饰的方法不能被子类重写,子类也不能写同名方法
- 父类中static修饰的方法,子类可以再次实现,但这不叫“重写”,而且方法申明必须一模一样
cat子类👶
public class Cat extends Animal{
public final String type = "pet cat";// 常量,子类申明后,子类对象不再使用父类中此常量
public static int age = 11;//静态变量,子类申明后,不再共享父类中此变量
/**
* 重新实现trait方法,特别之处在于:若子类没有方法,则会调用父类中的此方法,若子类有,则调用子类方法,却不叫重写
* */
public static void trait(){
System.out.println("这是动物类中的一个猫类");
}
/**
* 实现抽象方法
* */
@Override
public void bark() {
System.out.println("喵~");
}
}
dog子类👶
public class Dog extends Animal{
/**
* 实现抽象方法
* */
@Override
public void bark() {
System.out.println("汪~");
}
}
注意点
- 用final修饰的父方法,子类不能重写但可以调用
- 在子类中不申明父类中已申明的静态变量的前提下,所有子类对象共享父类中的静态变量,子类若申明则不再共享父类的静态变量
- final修饰的类无法被继承
- private修饰的属性和方法,均不可以被子类继承和使用
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/p/17708198.html