zoukankan      html  css  js  c++  java
  • Java的抽象类和接口

    java中的抽象类是一个像鬼一样的东西!

    它究竟有什么用!

    举例说明!例子如下:

    public class Main {
        public static void main(String[] args) {
            Person p = new Student();
            p.run();
        }
    }
    
    abstract class Person {
        public abstract void run();//抽象类
    }
    
    class Student extends Person {
        @Override
        public void run() {
            System.out.println("Student.run");
        }
    }

    简单的理解就是为了覆写父类中的方法,但该方法在父类中又没有任何意义,但又想装逼用覆写怎么办!所以就引入了抽象类,它借用关键字abstract,只有方法名没有具体的实现内容。大致就是这么个东西!

    =================================================================================

    哈哈!其实抽象类是有大作用的!

    上面简单介绍了一下抽象类,但在实际中,抽象类方法本质上是定义接口规范的,也就是说在父类中规定方法的名称,让继承它的子类都有相同的接口实现,这样多态就能发挥其真正的威力。

    但是对于单纯的抽象类(只有抽象的东西,其他的什么也没了),每次都要写关键字abstract,就太麻烦了,所以此处引入了接口!

    接口 interface:

    abstract class Person {
        public abstract void run();
        public abstract String getName();
    }
    //下面的代码就是用interface接口替换abstract抽象类的结果
    interface Person {
        void run();
        String getName();
    }

    那么究竟如何用继承的方法来继承接口呢?此处就引入了implements关键字:

    class Student implements Person {
        private String name;
    
        public Student(String name) {
            this.name = name;
        }
    
        @Override
        public void run() {
            System.out.println(this.name + " run");
        }
    
        @Override
        public String getName() {
            return this.name;
        }
    }

    接口还有一个重要的作用!就是可以实现子类继承多个父类的情况!在Java中,一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface,例如:

    class Student implements Person, Hello { // 实现了两个interface 同时继承了Person,Hello
      ... }

    关于接口的继承!一个接口也可以继承另一个接口,和普通的继承一样!例如:

    interface Hello {
        void hello();
    }
    
    interface Person extends Hello {
        void run();
        String getName();
    }

    合理的接口使用,提高代码的复用,是牛牛的工程师必备的技能。。。。。。

  • 相关阅读:
    2020.10.25【NOIP提高A组】模拟 总结
    6831. 2020.10.24【NOIP提高A组】T1.lover
    枚举一个数$n$的所有质因子
    gmoj 6832. 2020.10.24【NOIP提高A组】T2.world
    2020.10.24【NOIP提高A组】模拟 总结
    2020.10.17【NOIP提高A组】模拟 总结
    jQuery EasyUI Portal 保存拖动位置,仿谷歌DashBoard效果的
    SQLMAP注入教程-11种常见SQLMAP使用方法详解
    Windows下sqlmap的安装图解
    swap file "*.swp" already exists!的解决方法
  • 原文地址:https://www.cnblogs.com/lipu12281/p/12172464.html
Copyright © 2011-2022 走看看