Java类和接口快速理解

来源:互联网 发布:郑州淘宝学校 编辑:程序博客网 时间:2024/05/18 16:15

一、类的访问控制

    1、只有两种类:public class和class(default),不存在protected和private class。

    2、一个.java文件中只能有一个public class,且必须与文件名同名,但是可以有无数个(default)class。

    3、public class表示任何类都可以导入该类并使用它,(default)class表示只有同一个包中的类可以使用它,对于包外的类,它是不可见的,当然,对于其中的方法和变量,即使是public,对包外的类也是不可见的。

    4、同理interface。

 

二、抽象方法

    1、抽象方法只有声明,不能有实现,即只有abstract void func();,而不能abstract void func(){};

    2、非抽象类中不可以有抽象方法。

 

三、abstract class和interface

    1、相同点

        二者都不可以被实例化。

        实现抽象类和接口,都必须实现它们全部的抽象方法,而不能实现只其中一部分。当然,抽象类继承抽象类、抽象类继承接口、接口继承接口,可以不实现父类或接口的抽象方法,子类或子接口将获得父类或父接口的全部抽象方法。

    2、抽象类和接口的区别    

     ①语法层面:抽象类中可以有自己的数据成员,也可以有非abstract成员方法,包括构造方法。抽象类中的抽象方法必须用关键字abstract显示指出,以区别于非abstract方法;

                         接口中只能有静态的不能修改的数据成员(即static final的),所有的方法都只能是abstract public的,即使不显示指出,也会自动转换成抽象公有的。

        设计层面:一个类只能有一个继承关系,但是可以实现多个接口。抽象类表示的是以一种“is-a”的关系,而interface表示的是“like-a”的关系,这是设计理念的不一样。

 

四、interface的一些特性

    1、实现多个接口:如果两个接口定义了相同的方法,实现多个接口时怎么办?

         ①如果两个方法的名称、参数列表、返回值全部相同,可以在类中定义一个方法,其定义可以满足两个接口。

         ②如果两个同名函数参数列表不同,则是一种简单的重载情况:需要分别实现两组方法以满足各自的接口定义。

      ③如果两个同名函数参数列表相同,仅仅是返回值不同,则无法创建能满足两个接口的方法。这将产生编译错误,说明接口设计有缺陷。

 

原创粉丝点击