Java09:抽象类和接口

发布时间:2024年01月09日

6 抽象类和接口

6.1 抽象类

抽象类,也是类,所以它只有单继承。
1)abstract修饰符可以用来修饰方法 也可以修饰类。如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类;
2)抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类;

3)抽象类不能使用 new关键字来创建对象,它只是被类继承的,但是可以有普通方法;
4)抽象方法,只有方法的声明没有方法的实现;它只是被子类实现的;

5)子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

package com.g.abstraction;

public abstract class Action {
    /* abstract 修饰方法。抽象方法:只有方法名,没有方法的实现
    它就是一个约束,由继承类实现该方法*/
    public abstract void say();

    /*
    1.抽象方法:抽象方法只能在抽象类中存在。
    2.抽象类:
        a.不能 new这个抽象类,只能由子类去实现;
        b.抽象类中可以有 普通方法。
    3.抽象类的作用:简化开发,提高开发效率
     */
}

抽象类也有构造器:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.g.abstraction;

public abstract class Say {
    public Say() {
    }
}

6.2 接口

class是声明类的关键字 ;abstract是修饰类的关键字;interface是声明接口的关键字;
接口不是类,它可以单继承 也可以多继承。
接口的作用:有约束和实现分离的作用,达到面向接口编程的程度。

普通类:只有具体实现;
抽象类:具体实现和规范(抽象方法)都有;
接口:只有规范专业的约束(内部只能写抽象方法)。

1)接口就是规范,他定义的是一组规则,体现了现实生活中的“如果你是…则必须能…”的思想;
2)接口的本质:是契约。就像法律,制定好后就必须遵守。
3)面向对象(Object Oriented,缩写为OO)的精髓:是对 对象的抽象,最能体现这一点的就接口。讨论设计模式时,都是针对具备了抽象能力的语言(如C++、Java、C#等)的原因,是因为设计模式所研究的就是如何合理的去抽象。

package com.h.interfaces;
// interface 接口_1
public interface UserService {
    /*2.可以定义常量,默认是:public static final
        实际使用中,一般不在这里定义*/
    int AGE= 18;

    /* 1.接口中所有的定义都是抽象的,
        默认是:public abstract*/
    public abstract void add(String name);
    void deleter();
}
package com.h.interfaces;
// 接口_2
public interface TimeService {
    void time();
}

package com.h.interfaces;

/**
 * 1.抽象类通过 extends 继承父类(单继承);
 * 2.类通过 implements实现接口(可以是多个接口);
 * 3.实现了接口的类,就需要重写接口中的方法
 */
public class UserServiceImpl implements UserService,TimeService {
    @Override
    public void add(String name) {}
    
    @Override
    public void deleter() {}

    @Override
    public void time() {}
}

接口作用总结:

  1. 接口是约束;
  2. 接口定义了一些方法,可以让不同的人实现;
  3. 接口中的方法默认是 public static 修饰;
  4. 接口中的常量默认是 public static final 修饰;
  5. 接口不能被实例化,它没有构造器(构造方法),抽象类是有构造器的;
  6. 用 implement 可以实现多个接口;
  7. 实现类必须要重写接口中的方法。
文章来源:https://blog.csdn.net/weixin_45754498/article/details/135466985
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。