Java入门第64课——抽象类和接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/houjunkang363/article/details/90710123

很多同学不知道抽象类和接口究竟有什么作用。认真学完本节课,再做点练习(课后的案例和作业),即可了解抽象类和接口的美妙之处。

概要:

            1.1 使用抽象类

            1.1.1 抽象方法和抽象类

            1.1.2 抽象类不可以实例化

            1.1.3 继承抽象类

            1.1.4 抽象类的意义

            1.2 使用接口

            1.2.1 定义接口

            1.2.2 实现接口

            1.2.3 接口的继承

            博主点评

1.1 使用抽象类

1.1.1 抽象方法和抽象类

    · 由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个分号结尾;

    · 一个类中如果包含抽象方法,该类应该用abstract关键字声明为抽象类;

    · 如果一个类继承了抽象类,必须重写其抽象方法(除非该类也声明为抽象类)。

    abstract class Shape{
        private double c;
        public Shape(double c){
            this.c=c;
        }
        public abstract double area();
    }

1.1.2 抽象类不可以实例化

    · 抽象类不可以实例化,例如,如果Shape是抽象类的话,下面的代码是错误的:

    Shape s1=new Shape();

    · 即使一个类中没有抽象方法,也可以将其定义为抽象类,同样,该类不可以实例化。

    · abstract和final关键字不可以同时用于修饰一个类,因为final关键字使得类不可继承,而abstract修饰的类如果不可以继承将没有任何意义。

1.1.3 继承抽象类

    · 一个类继承抽象类后,必须重写其抽象方法,不同的子类可以有不同的实现。

    image.png

1.1.4 抽象类的意义

    · 抽象类的意义在于:

        为其子类提供一个公共的类型;

        封装子类中的重复内容(成员变量和方法);

        定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。

1.2 使用接口

1.2.1 定义一个接口

    · 接口可以看成是特殊的抽象类。即只包含有抽象方法的抽象类;

    image.png

1.2.2 实现接口

    · 与继承不同,一个类可以实现多个接口,实现的接口之间用逗号分隔。当然,该类需要实现这些接口中定义的所有方法;

    · 一个类可以通过implements关键字"实现"接口。一个类实现了某个接口后必须实现该接口中定义的所有方法。

    class AmericanCurl implements Runner,...{
        public void run(){
            System.out.println("run...");
        }
    }

实现接口(续1)

    · 接口可以作为一种类型声明的变量,一个接口类型的变量可以引用实现了该接口的类的对象;通过该变量可以调用该接口中定义的方法(具体的实现类提供了方法的实现)。

    Runner runner=new AmericanCurl();

1.2.3 接口的继承

    · 接口间可以存在继承关系,一个接口可以通过extends关键字继承另外一个接口。子接口继承了父接口中定义的所有方法。

    image.png

博主点评:

           抽象类和接口可以为子类封装公共的部分。比如动物都会跑,但是各自的速度不同,这样就可以定义一个抽象父类,里面有run方法,子类具体去实现,比如猫的run方法跑的慢,猎豹的run方法跑得快。

扫描关注我吧:

猜你喜欢

转载自blog.csdn.net/houjunkang363/article/details/90710123