包、权限修饰符、final、常量 、枚举 、抽象类 part12

一、包

二、权限修饰符

三、final

四、常量

五、枚举

六、抽象类

一、包

1.什么是包

包:分门别类管理不同类,类似于文件夹。(命名通常采用 package+公司域名倒写+技术名称)。e.g. package.com.itheima.javabean

public class student{

}

一般放在第一行,Idea会自动帮忙创建。

2.导包

相同类下的包可以直接访问,不同包下的类需要导包import.包名.类名

一个类中需要不同的类,两个类的名称是一样的,默认只能导入一个类,另外一个要带包名访问。

包、权限修饰符、final、常量 、枚举 、抽象类 part12_第1张图片

二、权限修饰符

1.什么是权限修饰符

用来控制一个成员能够被访问的范围的

可以修饰成员变量、方法、构造器、内部类,不同权限修饰符修饰的成员能被访问的范围将收到限制。

2.分类和具体的作用范围

四种范围从大到小:public>protected>缺省(不写)>private

包、权限修饰符、final、常量 、枚举 、抽象类 part12_第2张图片

类本部:同一个类

本包:同一个包中其他类

子类:不同包下的子类

外部包:不同包下的无关类

成员变量一般私有,方法一般公开

三、final关键字

1.作用

final为最终的意思,用来修饰方法、变量、类

修饰方法:表示该方法是最终方法,不能被重写

修饰变量仅能被赋值一次

        Q:变量分为几种?

            局部变量

            成员变量:静态成员变量/实例成员变量      静态成员变量可以在初始化的时候和静态代码块中赋值/final基本不会用来修饰实例成员变量

        

        修饰基本类型,数据值不能改变

        修饰引用数据类型,地址值不能改变,地址内容可以改变

修饰类:最终类,不能被继承            String类不能被继承,产生子类

四、常量

1.常量的概述和基本作用

常量

public static final修饰的成员变量,必须有初始化值,值不能被改变。可以用做系统配置信息。

命名规范:英文单词全部大写,多个英文用下划线连接起来

执行原理

编译阶段会宏替换,把常量全部替换为字面值,使用常量的程序执行性能和字面量一致

2.常量做信息标志和分类

五、枚举

1.枚举的概述

枚举:java的一种特殊类型

作用:做信息的标志和分类

格式:修饰符+enum+枚举名称{

                        枚举类实例名称

        }

        enum Season{

                        SPRING  SUMMER AUTUMN WINTER

        }(构造器事私有的,多例模式)

包、权限修饰符、final、常量 、枚举 、抽象类 part12_第3张图片

javac编译

Javap反编译

2.枚举的使用场景(超级玛丽案例)

 入参约束严谨

六、抽象类

1.抽象类方法概述

  • 父类知道子类要完成的某功能,只定义该功能的基本要要求。具体实现由子类完成,父类只定义该功能的基本要求。
  • 抽象类必须使用abstract修饰。

       修饰符 abstract class 类名{  }

  • 抽象方法:

                抽象类中定义的子类必须完成功能的基本要求

                        修饰符 abstract 返回值类型 方法名称(形参列表);

                没有方法体,只有方法签名,必须用abstract修饰

一个类如果继承了抽象类,就必须继承全部抽象方法,否则这个抽象类也被定义为抽象类

2.抽象类案例

                加油站根据不同折扣加油的案例

3.抽象类的特征、注意事项

  • 可以创建抽象方法,但不能创建对象(反证法,抽象对象没有方法体,执行不了)
  • 类有的成员(成员变量,成员方法,构造器)抽象类都有
  • 抽象类中不一定又抽象方法,但又抽象方法得一定是抽象类
  • 类继承抽象方法必须继承全部的抽象方法,否则就会被定义为抽象类
  • 不能用abstract修饰变量,代码块和构造器

Q:抽象类和final什么关系?

        互斥关系 abstract是专门抽象出来用来继承重写的   final是绝育

4.抽象类的应用知识:模板方法模式

  • 什么时候使用?一个功能多处开发,该功能中大部分代码是一样的,仅有部分不同

模板方法定义确定功能的抽象方法

不能确定功能的抽象方法定义成抽象方法交给具体的子类去实现

  • 案例:银行利息结算系统
  • 模板方法用final修饰,不允许子类重写避免模板方法失效

七、接口

1.接口概述、特点

  • 什么是接口?

接口就是体现规范的,用抽象方法定义的一组行为规范,更加彻底的抽象。

类比USB插头。

  • 接口的定义与特点

格式

关键字interface来定义

public interface  接口名{

                                        //常量

                                        //抽象方法

                                         }

JDK8之前只能是抽象方法和常量

接口不能实例化

public修饰,目的是公开化    常量public  static final可以不写,接口会默认加上/抽象方法 public /abstract可以省略/抽象类里的缺省不同于此处的省略

2.接口的基本使用:被实现

接口是用来被实现的,实现接口的类被称为实现类,实现类可以被理解成为子类

修饰符 class  实现类  implements 接口1  接口2  接口3 。。。{ }

接口可以被类单实现,也可以被类多实现(干爹可以有多个儿子)

一个类实现接口,必须实现全部接口的全部抽象方法,否则这个类需要定义为抽象类

3.接口与接口的关系:多继承

类和类的关系:单继承

类和接口的关系:多实现

接口和接口的关系:多继承,一个接口可以同时继承多个接口

接口多继承的作用:规范合并,整合多个接口为一个接口,便于子类实现

若两个接口规范冲突,不能同时继承

4.JDK8开始接口新增方法

允许接口中直接定义带有方法体的方法

第一种  默认方法

类似之前写的普通实例方法,必须用default修饰

默认会public修饰,需要用接口实现类的对象调用。接口类不能创建对象,只能过继给实现类,由实现类对象调用。

包、权限修饰符、final、常量 、枚举 、抽象类 part12_第4张图片

public default void run{

                                        }

第二种  静态方法

默认会用public修饰,必须用static修饰

注意:接口的静态方法必须用本身的接口名来调用

包、权限修饰符、final、常量 、枚举 、抽象类 part12_第5张图片

第三种  私有方法

私有的实例方法,必须用private修饰,JDK1.9才可以调用

只能在本类中被其他默认方法或私有方法访问

5.使用接口的注意事项

继承父类,又同时实现接口方法,父类和接口有同名方法,默认调用父类的 

一个类实现多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写方法即可

        



       

你可能感兴趣的:(java)