zoukankan      html  css  js  c++  java
  • Java-面向对象的三大特征--继承

    1.继承的概念

      现实生活中,继承是指后代继承父辈的财产。在类中,继承描述的是在一个现有的类的基础上去构建一个新的类,构建的类称为子类,现有的类称为父类,拥有继承关系的子类,会继承父类下所有可以继承的属性和方法。

    2.继承-规则

       在Java中,子类继承父类的直接表象就是在子类的类名后面加上关键字“extends  父类类名”

       在继承的情况下,子类能够获得父类的所有可见的属性或者方法

       同包情况下:父类 private 修饰的内容对子类不可见,子类不能继承

      不同包的情况下:父类private 和 default修饰的内容子类都不可见,子类不能继承

       java只支持单根继承:一个子类同一情况下只能继承一个父类,直接父类

       java中,一个父类可以有若干的子类

      Java中,支持多层继承关系,即一个类的父类也可以继承它的爷爷类

      构造方法不能继承

    3.继承-构造方法

    子类在声明的时候,构造方法的调用规则

      如果子类没有显式(写出来的)的调用父类的构造方法,也没有显式的调用自身的其他构造方法,那么就是默认调用的父类的无参构造方法

      如果调用了自己的其他构造方法,这个构造会调用父类的某个构造方法

      在继承的情况下,子类一定会调用某个父类的构造方法

      假设父类没有空参构造方法,子类则必须显式的调用一个父类具体的构造方法

      父类构造方法一定是在子类构造方法之前被执行(爸爸没出生,儿子不可能出生);

    4.继承-关键字super

      当父类和子类有同样的方法的时候,因为父类的方法被子类方法覆盖了,所以只会优先调用子类的方法,那么要想在使用子类的同时也使用父类的方法,就只能通过super来调用了。

      使用super关键字调用父类的成员变量和成员方法规则。

    super.成员变量
    super.成员方法([参数1,参数2...])

      使用super关键字调用父类的构造方法;通过super关键字调用父类的构造方法的代码必须放在位于子类构造方法的第一行,并且只能调用一次

    super([参数1,参数2...])

      如果父类和爷爷类有相同的属性或者方法,super访问的是离他关系最近的那个类,例如:父类和爷爷类,子类跟父类关系更近;

    5.继承-方法重写

      子类继承了父类的方法,而子类想对这个从父类继承而来的方法进行修改,那么只需要在子类里面写一个一摸一样的方法覆盖掉父类的方法,然后编写自己想要的内容,这种行为称为方法的重写

      子类对父类方法重写之后,对于父类和子类拥有了同一个方法的情况,代码执行只会调用子类的重写方法,如果想同时有父类方法的功能,可以通过super来调用父类方法

      重写的规则

        重写是子类的方法覆盖父类的方法,覆盖的前提是子类方法和父类方法一样

        参数类型和方法名必须一致,如果参数类型不一致,那么对于子类来说,属于重载了那个父类方法

        返回值类型:

          子类的返回值类型和父类一样或者子类的返回值类型,是父类返回值类型的子类

        访问修饰符:

          子类的修饰符不能比父类严格

          子类不能比父类有更多的异常

           静态的是不能被覆盖为非静态的

    6.继承实现

    父类

    package org.example;
    
    //父类
    public class Father {
        //银行卡
        String debitCard = "8888888888888";
        //公司
        String firm = "图书文化公司";
    
        //爸爸的财产
        public void property(){
            System.out.println("爸爸拥有一张无限额的银行卡"+debitCard+"和一间"+firm);
    
        }
    }

    子类

    package org.example;
    
    /**
     * 儿子继承爸爸的财产
     */
    public class Son extends Father {
    
        //重写爸爸的财产方法
        @Override
        public void property(){
            System.out.println("儿子继承爸爸的银行卡"+debitCard+"和一间"+firm);
    
        }
    
        public static void main(String[] args) {
            Son son = new Son();
            System.out.println("爸爸给的银行卡"+son.debitCard);
            System.out.println("爸爸给的公司"+son.firm);
            son.property();
        }
    
    }
  • 相关阅读:
    FFmpeg编程(二)FFmpeg中级开发
    Oracle锁表与解锁 对象锁与解锁
    index_combine and index_john
    oracle hint
    SAR
    组播IP地址
    Linux下使用tc(Traffic Control) 流量控制命令模拟网络延迟和丢包
    Linux服务器丢包故障的解决
    linux man page sections
    微服务架构统一安全认证设计与实践
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15230127.html
Copyright © 2011-2022 走看看