Java 基础学习总结(一)抽象类和接口

  接触java的时间不是很长,以前对抽象类和接口的定义和区别也是模糊不清,最近拿起学校的教程读了起来,也参阅了网上的博客大神理解和总结,于是决定自己按照自己的理解来总结一下。

 

    抽象类(半成品)

    一般形式:

      protected abstract class person(classname){

        ......

      }

 

  抽象方法:就是用abstract关键字声明的方法。例如:

  abstarct void walk(); 这个方法就是一个抽象方法。

  这里我们注意到,这个方法跟一般的方法是不同的,它没有方法体,亦即是{},我们只需要对其进行声明,而不去实现它。但是如果我们不实现这个方法,那还声明干什么呢?不是吃饱了没事干吗?其实不然,声明抽象方法的目的是为了继承(extends)比 如有两个类,一个父类,一个子类,在父类中实现这个方法是毫无意义,但是在子类中实现这个方法是必须的,那么此时就可以把 这样的方法声明为抽象方法了。

  一般情况下,如果一个类含有抽象方法,那么这个类就一定是抽象类;但是反之,如果一个类是抽象类,它不一定就有抽象方法。

  抽象类和普通类的区别:

  大多数的情况下,抽象类和接口没什么区别,比如说同样拥有成员变量、成员方法以及构造方法,但是和普通类相比还是有以下的几点不同:

     1. 抽象类的声明时关键字必须为 public或者是protected,如果不是这样,那么其子类就不能对其进行继承,既然抽象类不继承,那还有存在的意义?而且,默认不写的情况下,其默认的关键字是public 。

     2 .抽象类里面不能 new 对象。其原因是这个类是抽象出来的,根本不存在的类,实例化一个根本不存在的东西是没有意义的。

     3 .如果一个类继承一个抽象类,并且这个类里面存在抽象方法。那么子类必须要做到

    1)子类一定要对父类的父类的抽象方法进行实现

 

               

 

 

    2 )如果不实现父类的抽象方法,那么必须要将子类也声明为抽象类

                       

       

     接口(极端的抽象类)

      一般形式:

    

      public interface student(interfacename) {
          ......

        }

     和抽象类的存在差不多,也是为了子类的继承,但是接口的继承不叫做继承而是叫做实现,用implents关键字代替了extends 关键字,而且和继承不同,接口可以多现,但继承只能是单继承

       使用接口时,有以下几点需要注意:

   1. 接口中的定义:

    1)公开的常量( public static final )

       2)公开的抽象方法(亦即是不能再使用protected) 

       3)公开的内部类、内部接口

    2 .一个类可以实现多个接口,如下,这是允许的。

                               class A implements X,Y,Z {

                                 }

 

      抽象类和接口的不同:

      方           法:抽象类可以包含除开抽象方法外的其他方法,但是接口中只存在抽象方法

      变           量:接口中的成员变量的类型都是public static final 类型,但是抽象类的成员变量类型没有限制。

      子类和父类:抽象类的继承是单继承,接口的实现是多实现。

      静           态:抽象类可以有静态方法和代码块,但是接口中不允许存在。

    

    

 

 

                                  如若有误,烦请指出,不胜感激!!!

猜你喜欢

转载自www.cnblogs.com/YJzhiqianni/p/10572132.html