Java 抽象类和接口

2019-08-12  本文已影响0人  小石头呢

在Java语言中,abstract classinterface是支持抽象类定义的两种机制

抽象类

1.概念

2.抽象方法

3.总结

4.代码例子

//定义一个抽象类 管理学习Android
//抽象类-模板
//抽象类里面定义使用这个功能就必须实现的方法或者属性
abstract class BaseAndroidStudy{
    //准备工作
    {
        System.out.println("锻炼身体");
    }

    //定义一个静态的常量
    public final String cBook = "C Primier";

    //定义一个属性,用于保存数据
    public String javaBook;

    //定义一个变量保存内部类
    public Dream dream;

    //为了安全,通常定义一个无参的构造方法
    public BaseAndroidStudy(){

    }

    public BaseAndroidStudy(String javaBook,String dream){
        this.javaBook = javaBook;

        this.dream = new Dream();
        this.dream.name = dream;
    }

    //定义一个抽象方法 不需要实现 子类来实现
    public abstract void studyC();

    //定义了一个普通方法,已经确定了方法的具体实现
    public void studyJava(){
        System.out.println("参加培训班");
    }

    //定义一个内部类,用于管理每个人的梦想
    private class Dream{
        public String name;
        public void show(){
            System.out.println("梦想是:"+name);
        }
    }
}

//使用extends来继承一个抽象类
//如果继承一个抽象类,就必须实现抽象类里面的抽象方法
//如果不实现抽象方法,也可以把这个类定义为抽象类
class Student extends BaseAndroidStudy{

    public String name;

    @Override
    public void studyC() {
        System.out.println("看书 看视频");
    }

    public Student(String name,String bookName,String dream){
        super(bookName,dream);
        this.name = name;
    }
}
package swu.xl.day6;

public class MyClass {
    public static void main(String[] args){

        //1.显示的创建一个类来继承于抽象类 创建这个类的对象
        Student xw = new Student("小王","java编程思想","拿offer");

        //2.匿名类 只使用一次
        BaseAndroidStudy zs = new BaseAndroidStudy("java编程思想","拿offer") {
            @Override
            public void studyC() {
                System.out.println("培训");
            }
        };
    }
}

接口

1.概念

2.特性

interface testInterface{
    //public static final int COUNT = 100;
    int COUNT = 10;

    //public void test2();
    //public abstract void test3();
    void test1();

    /*public static class inner{
        int count;
        public void show(){
            System.out.println("你好啊");
        }
    }*/
    class inner{
        int count;
        public void show() {
            System.out.println("你好啊");
        }
    }
}

3.接口的实现

类使用implements关键字实现接口,可以用implements实现多个接口,接口与接口之间用,隔开。

class XLClass implements testInterface{

    @Override
    public void test1() {
        inner in = new inner();
        in.show();
    }
}

4.接口的继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。不同的是可以继承多个接口。

public interface Interface extends Interface1, Interface2{
     //自己的抽象方法
}

5.标记接口

6.接口中方法的实现

public interface Iterable<T> {
    Iterator<T> iterator();

    default void forEach(Consumer<? super T> var1) {
        Objects.requireNonNull(var1);
        Iterator var2 = this.iterator();

        while(var2.hasNext()) {
            Object var3 = var2.next();
            var1.accept(var3);
        }

    }

    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(this.iterator(), 0);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读