• 面向对象三大特性之继承


    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,

    或子类从父类继承方法,使得子类具有父类相同的行为。

    格式:

    class 子类 extends 父类 {}

    在子类中,访问父类中的成员变量格式:

    super.父类中的成员变量

    例:

     1 class Fu
     2 {
     3     //Fu中的成员变量。
     4     int num = 5;
     5 }
     6 class Zi extends Fu
     7 {
     8     //Zi中的成员变量
     9     int num = 6;
    10     void show()
    11     {
    12         //子父类中出现了同名的成员变量时
    13         //在子类中需要访问父类中非私有成员变量时,需要使用super关键字
    14         //访问父类中的num
    15         System.out.println("Fu num="+super.num);
    16         //访问子类中的num2
    17         System.out.println("Zi num2="+this.num);
    18     }
    19 }
    20 class Demo5 
    21 {
    22     public static void main(String[] args) 
    23     {
    24         Zi z = new Zi(); //创建子类对象
    25         z.show(); //调用子类中的show方法
    26     }
    27 }

    继承的特性

    • 子类拥有父类非private的属性,方法。

    • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

    • 子类可以用自己的方式实现父类的方法。

    • Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。

    • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)

    继承关键字

    继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object祖先类。

    1.extends

    extends 有“扩展”的意思:子类是父类的扩展

    在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。

     1 class parent {
     2 
     3     public parent(){
     4 
     5         System.out.println("调用父类的构造方法");
     6 
     7     }
     8 
     9 }
    10 
    11  
    12 
    13 class subparent extends parent{
    14 
    15      public subparent(){
    16 
    17          System.out.println("调用子类subparent()的构造方法");
    18 
    19      }
    20 
    21 }
    22 
    23 public class Son extends subparent{
    24 
    25      public  Son()
    26 
    27      {
    28 
    29          System.out.println("调用子类son的构造方法");
    30 
    31      }
    32 
    33      public static void main(String[] args)
    34 
    35      {
    36 
    37          Son k = new Son();
    38 
    39      }
    40 
    41 }

     继承-子父类中成员方法特点-重写&应用

    l  成员方法特殊情况——覆盖

    子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。

     1 class Fu{
     2     public void show(){
     3         System.out.println("Fu类中的show方法执行");
     4     }
     5 }
     6 class Zi extends Fu{
     7     public void show2(){
     8         System.out.println("Zi类中的show2方法执行");
     9     }
    10 }
    11 public  class Test{
    12     public static void main(String[] args) {
    13         Zi z = new Zi();
    14         z.show(); //子类中没有show方法,但是可以找到父类方法去执行
    15         z.show2();
    16     }
    17 }
     1 class Fu
     2 {
     3     public void show()
     4     {
     5         System.out.println("Fu show");
     6     }
     7 }
     8 class Zi extends Fu
     9 {
    10     //子类复写了父类的show方法
    11     public void show()
    12     {
    13         System.out.println("Zi show");
    14     }
    15 }

    l  子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

    private  protected  default  public

    抽象类

    当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

    抽象类定义的格式:

    1 abstract class 类名 {
    2 }

     抽象类的特点:

    1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

    2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

    3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

    有抽象方法的类一定是一个抽象类

  • 相关阅读:
    常用公共配置类——定时任务配置
    常用公共工具类——生成token
    常用公共工具类——分页工具类(IPage)
    常用公共工具类——Shiro工具类
    常用公共工具类——Redis工具类
    fmt.sprintf,fprintf区别
    web界面不显示内容排查思路
    golang值传递和引用传递
    web开发
    聊聊crd和list-watch
  • 原文地址:https://www.cnblogs.com/2734156755z/p/9346168.html
Copyright © 2020-2023  润新知