Java 抽象类的简单使用

自己做的一点笔记...

抽象类:使用关键词 abstract 进行修饰,抽象类不能生成对象(实例化),且含有抽象方法(使用 abstract 进行声明,并且没有方法体)。

 

特点:

  1️⃣  抽象类不一定有抽象方法,但是有 abstract 修饰的方法,则其必须是抽象类;

  2️⃣  子类如果继承了抽象类,则必须重写抽象类中的方法;

  3️⃣  抽象类不能定义为 private 因为,它需要通过继承,才能有意义(子类不能修改 private 修饰的类的成员);

  4️⃣  如果子类继承了抽象类,但是没有实现父类的抽象方法,则子类也必须定义为抽象类。

 

作用:抽象类,给事物进行抽象,如果一些某些事物拥有同样的行为,就可以通过抽象类来统一进行规范,例如通过定义泛型的抽象类:

 

package leetcode.abstructs;

import java.util.List;

/**
 * @todo 抽象类的应用测试
 * @since 9:44 2019/1/29
 * @author hanyf
 */
public abstract class MyAbstract<T> {
    private List<T> list;

    public MyAbstract() {
    }

    public MyAbstract(List<T> list) {
        this.list = list;
    }

    public void method(){
        for (T t : list){
            doLoop(t);
        }
    }

    /**
     * @todo 抽象方法,在实例化调用该类的此抽象方法,并且可以对它进行重写
     * @since 9:51 2019/1/29
     * @author hanyf
     * @params
     * @return
     */
    public abstract void doLoop(T t);
}
抽象类

 

package leetcode.test;

import leetcode.abstructs.MyAbstract;

import java.util.ArrayList;
import java.util.List;

public class 抽象方法{
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        int i = 20;
        while (i>0){
            list.add("I'm String for "+ i);
            i--;
        }

        //抽象类的实现
        //重写了抽象类方法实现
        new MyAbstract<String>(list){
            @Override
            public void doLoop(String s) {
                System.out.println(s);
            }
        }.method();
    }
}
main方法

 

posted @ 2019-02-14 21:02  麋鹿森林h  阅读(183)  评论(0编辑  收藏  举报