Java语法----抽象类与接口

DAY7

一、抽象类
定义:就是一些行为在父类中不能给出具体的实现,而是仅仅声明出来,这个只有方法声明而没有方法体的方法叫做抽象方法,如果一个类中有了抽象方法,那么这个类就必须定义为抽象类
定义格式:
在这里插入图片描述
抽象类特点:

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是一个抽象类;
  • 如何初始化一个抽象类?如何使用抽象类里面的抽象方法了?
    父类不能做的事情,可以交给子类实现,这也是多态的一种体现,抽象类的多态
  • 抽象类的子类要么是抽象类,要么实现所有的抽象方法;

抽象类成员的特点:

  • 成员变量:可以是变量,也可以是常量;
  • 构造方法:是有构造方法的,用于子类初始化父类成员
  • 成员方法:可以是具体的方法,也可以是抽象的方法,一般用于约束子类必须要实现的功能(如:参数等)
    案例讲解:
    具体事物:讲课
    共性:姓名、年龄、讲课
    通过分析,发现讲课这个行为在老师类中不应该给出具体的实现,因为每个老师讲什么课,应该是由具体的老师进行实现的
    在这里插入图片描述
    接口:
    定义:接口一般是用于做扩展功能的,哪一个类想实现某种功能,实现对应的接口即可,接口里面的方法也是抽象的
    定义格式:
    在这里插入图片描述
    接口的成员特点:
  • 成员变量
    接口里面只能是常量,而且前面所有默认修饰符:public static final
  • 构造方法
    没有构造方法,因为接口里面没有具体的方法,而且常量也可以直接通过接口名调用,要对象没有作用
  • 成员方法
    只能有抽象方法,默认修饰符:public abstract
    如何使用接口里面的抽象方法了?
    可以让一个子类实现这个接口,然后再实现里面的抽象方法,然后创建该子类的对象,这个也叫做接口多态
    子类如何实现接口了?
    在这里插入图片描述
    接口子类的特点:
  • 要么是抽象类,要么实现接口里面所有的抽象方法
    类和接口以及彼此之间的关系:
  • 类与类
    继承关系,只能单继承,不能多继承,但可以多层继承
  • 类和接口
    实现关系:单实现,多实现,多层实现,还可以在继承一个类的同时实现多个接口
  • 接口与接口
    继承关系:可以单继承,可以多继承,还可以多层继承
    抽象类和接口:
  • 成员区别
  • 成员变量
    抽象类:可以是常量,也可以是变量
    接口:只能是常量,默认修饰符:public static final
  • 构造方法
    抽象类:有,因为抽象类里面有具体的实现,子类可能会使用抽象类里面的成员
    接口:没有,因为里面没有具体的实现,唯一的一个常量还可以通过接口名调用,所以要对象没有意义
  • 成员方法
    抽象类:可以是抽象的,也可以是具体的
    就扣:只能是抽象的,默认修饰符:public abstract
  • 抽象类和接口的关系
    抽象类:可以继承一个类的同时,实现多个接口,类和类之间是继承的关系
    接口:可以是单继承,多继承,多层继承,类和接口是实现关系
  • 设计理念的区别:
    抽象类:一般是做共性的封装,要求子类必须实现
    接口:一般是做扩展性的封装,是额外功能,子类想要具有某种功能,实现对应的接口
    包:
    包:就是一个文件夹
    包的作用:就是用于管理不同文件的
    包的划分:不同的包装不同的类
    包的定义:
    在这里插入图片描述
    包定义的注意事项:
  • 定义包使用package,定义包的代码必须放在可执行代码的第一行
  • 一个源文件中只能出现一个package关键字定义包的语句
  • 如果没有出现package关键字,就代表这个类没有包名
    带包的类的编译和运行:
  • 手动
  • 使用javac进行编译源文件
  • 手动建立对应包的文件夹
  • 将编译好的类文件剪切到对应的文件夹中
  • 使用java命令进行编译:java 路劲名.包含main方法类名
  • 自动
  • 使用javac -d . 源文件名.java
  • 使用java 路劲名.类名
    二、权限修饰符
    在这里插入图片描述
    详细解释:
  • public:什么地方都可以访问;
  • protected:只要是子类都可以访问;
  • 默认:只要在同一个包中;
  • private:只能在同一个类中访问;
    一个类被public修饰的注意事项:
  • 一般情况下一个包含main方法的类都会定义成public,访问权限足够大;
  • 源文件名需要和当前源文件中被public修饰的类名保持一致;
  • 一个源文件中只能出现一个被public修饰的类

猜你喜欢

转载自blog.csdn.net/qq_36633450/article/details/84063349
今日推荐