继承

Posted changwe12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承相关的知识,希望对你有一定的参考价值。

Java面向对象三大特征:封装性、继承性、多态性


继承是多态的前提,没有继承就没有多态


特点:共性抽取

  1 public class Phone {
  2 
  3     public void call() {
  4         System.out.println("打电话");
  5     }
  6 
  7     public void send() {
  8         System.out.println("发短信");
  9     }
 10 
 11     public void show() {
 12         System.out.println("显示号码");
 13     }
 14 
 15 }
 16 

新建Phone类

  1 public class NewPhone extends Phone {
  2 
  3     @Override
  4     public void show() {
  5         super.show();
  6         System.out.println("显示姓名");
  7         System.out.println("显示头像");
  8     }
  9 
 10 }

新建NewPhone类

  1 public class Demo01Phone {
  2 
  3     public static void main(String[] args) {
  4         Phone phone = new Phone();
  5         phone.call(); // 打电话
  6         phone.send(); // 发短信
  7         phone.show(); // 显示号码
  8         System.out.println("=============");
  9 
 10         NewPhone newPhone = new NewPhone();
 11         newPhone.call(); // 打电话
 12         newPhone.send(); // 发短信
 13         newPhone.show(); /*显示号码
 14                            显示姓名
 15                            显示头像
 16                            */
 17     }
 18 
 19 }
新建Demo01Phone测试类


说明:


  • 继承的格式:

定义父类:

public class 父类名称() {…}

定义子类:

public class 子类名称 extends 父类名称() {…}


变量或方法的访问:

局部变量:getter/setter

本类的成员变量:this.变量/方法名称

父类的成员变量:super.变量/方法名称


  • 覆写和重载的区别:

覆写(Override):方法名称一样,参数列表一样

重载(Overload):方法名称一样,参数列表不一样


  • @Override写在方法前,用来检测是不是有效的正确方法覆写

例如:在NewPhone类的第三行代码使用@Override用来检测是否构成覆盖重写


  • 返回值:

子类方法的返回值必须小于等于父类方法的返回值范围

另:java.lang.Object类是所有类的公共最高父类,java.lang.String就是Object的子类。


修饰符:

子类方法的权限必须大于等于父类方法的权限修饰符。

另:public > protected > (default) > private

(default)代表空白不写

以上是关于继承的主要内容,如果未能解决你的问题,请参考以下文章

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

Flask之模板之宏继承包含

java中封装,继承,多态,接口学习总结

php如何实现多继承?

如何覆盖继承的嵌套类中存在的虚拟方法

多线程 Thread 线程同步 synchronized