zoukankan      html  css  js  c++  java
  • 从零开始学JAVA DAY6

    再说继承:

    继承是类与类之间的一种关系,对于一个参数,在继承之后,会在子类中隐藏自动的加上一个代码块super()

    关键字:super  

    原本学了一个this关键字,在复习一下,this关键字是该类直接调用对象进行操作,而super也差不多,只是调用的是父类

    为什么要有这样一个代码块super()/this()呢? 就是为了初始化父类的一些数,因为在子类中要调用这些函数或者值,那么先把它初始化成与父类相同,防止错误

    那么自动加了这个初始化后,一创建子类,那么会先执行父类中的初始化函数

    class Fu
    {
        Fu(){
            System.out.println("Fu");
        }
    }
    
    class Zi extends Fu
    {
        Zi(){
            System.out.println("Zi");
        }
    }
    
    class Demo
    {
        public  static void main (String[] args)
        {
            //Fu fu = new Fu();
              Zi zi = new Zi();
    
    
    
        }
    }
    

    输出 Fu

           Zi

    子类可以覆盖父类的函数,可以利用这一点来拓展程序,但是我们如果只要调用这个父类中的4个函数,而不需要6个函数时,我们可以使用final修饰符

    final修饰符:最终的意思

    可以作用于定义常量   final int PI = 3.14 一旦定义就无法再进行更改(常量一般全用大写字母来表示)

    可以作用于函数  一旦这个函数被final 修饰,它就不能被继承或者聚合 

    继承除了extends关键字之外还有另一个关键字implements

    implements 实现:

    其中子类中所有的功能都是抽象的需要自己来实现,继承虽然只能一个但是接口能多个,中间用,隔开

    比方说 

    class Zi extends Fu implements Fu1, Fu2

    这是要引入接口概念:
    初期理解:

    是一个特殊的抽象类,如果抽象类中的方法都是抽象的,那么该类可以通过接口形式来表示

    抽象类里里面才有抽象方法

    修饰符:abstract抽象 不需要具体的实现

    接口:interface 是一个特殊类,里面全是抽象的

    类与接口之间是实现关系 implements

    实现方法:

    interface B

    {

    }

    class A implement B

    {

    }

    类与类之间,接口与接口之间是继承关系 extends 

    接口不可以创建对象,需要被子类实现,要把所有抽象函数都具体化覆盖

    interface inter

    {

     public abstract  void show();

    里面有固定格式

    常量: public static final int X = 3;

    函数: public static final void show();

    所以在被调用时记得提高权限public

    接口与继承:接口能多继承而父类子类只能单继承的原因

    一个子类如果能多继承如果有两个父类有相同的函数,那么会矛盾

    而接口中没有具体的实现方法

    接口的应用:

    interface 相当于一个引导,里面没有具体的方法体

    可以写成 void show();

    而类中有具体的方法体 void show(){}

    除了interface  如果一个类里面的方法体无法确定那就用abstract 抽象

    接口实例

    interface smoking
    {
        void smoke();
    }
    
    abstract class student
    {
       abstract  void study();//因为方法体为抽象所以类名要改成抽象
       void sleep(){
        System.out.println("sleep");
       }
    }
    class people extends student implements smoking
    {
        void study(){
    
        }
        public void smoke(){
    
        }
    }
    
    class demo
    {
        public static void main(String[] args)
        {
            people zhangsan = new people();
            zhangsan.sleep();   
        }
    }
    

      

  • 相关阅读:
    Luogu 3119 [USACO15JAN]草鉴定Grass Cownoisseur
    Luogu 4514 上帝造题的七分钟
    Luogu 1484 种树
    Luogu【P2904】跨河(DP)
    Luogu【P2065】贪心的果农(DP)
    Luogu【P1725】琪露诺(单调队列,DP)
    二分图匹配
    单调队列
    Tarjan的强联通分量
    手写堆
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4758437.html
Copyright © 2011-2022 走看看