包、final关键字、常量、枚举、抽象类


什么是包:

  • 包用来分门别类的管理不同类的,类似于文件夹、建包利于程序的管理和维护
  • 建包的语法格式:package 公司域名倒写.技术名称包名建议全部英文小写,且具备意义
  • 建包语句必须在第一行,一般IDEA工具会帮助创建

导包:

  • 相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名
  • 假如一个类中需要用到不同类,而这个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问。

权限修饰符


什么是权限修饰符:

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

权限修饰符的分类和具体作用范围:

  • 有四种作用范围由小到大(private > 缺省 > protected > public)
修饰符 同一个类中 同一个包中其他类 不同包下的子类 不同包下的无关类
private
缺省
protected
public

final关键字


  • final 关键字是最终的意思,可以修饰(类、方法、变量)
  • 修饰类:表明该类是最终类,不能被继承。
  • 修饰方法:表明该方法是最终方法,不能被重写。
  • 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
  • 关于final修饰的变量有两点注意:
  1. final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
  2. final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。

常量


  • 常量是使用了public static final修饰的成员变量,必须要有初始化值,而且执行的过程中其值不能被改变。
  • 常量的作用:通常用来记录系统的配置数据。

代码示例:

public class Constant {
    public static final String SCHOOL_NAME  = "第一中学";//命名规范:全部大写字母,用_连接
    public static final String LOGIN_NAME  = "admin";
    public static final String PASS_WORD  = "123456";
} 

常量做信息配置的原理、优势

  • 在编译阶段会进行“宏替换”:把使用常量的地方全部替换成真实的字面量。
  • 维护系统容易,可读性更好。

枚举


  • 枚举是Java中的一种特殊类型
  • 枚举的作用:“是为了做信息的标志和信息的分类”。
  • 定义枚举的格式:修饰符 enum 枚举名称{第一行都是罗列枚举类实例的名称。 }
enum Season{
    SPRING , SUMMER , AUTUMN , WINTER;
}
//上面代码编译后,在进行反编译得到如下代码。
Compiled from "Season.java"
public final class Season extends java.lang.Enum<Season> {
    public static final Season SPRING = new Season();
    public static final Season SUMMER = new Season();
    public static final Season AUTUMN = new Season();
    public static final Season WINTER = new Season();
    public static Season[] values();
    public static Season valueOf(java.lang.String);
    }

枚举的特征:

  • 枚举类都是继承了枚举类型:java.lang.Enum
  • 枚举都是最终类,不可以被继承。
  • 构造器都是私有的,枚举对外不能创建对象。
  • 枚举类的第一行默认都是罗列枚举对象的名称的。
  • 枚举类相当于是多例模式。

抽象类


  • 抽象类可以理解成不完整的设计图,一般作为父类,让子类来继承。
  • 当父类知道子类一定要完成某些行为,但是每个子类该行为的实现又不同,于是该父类就把该行为定义成抽象方法的形式,具体实现交给子类去完成。此时这个类就可以声明成抽象类。
  • 关键字:abstract
public abstract class Animal{
    public abstract void run();
    }

1、抽象类、抽象方法是什么样的?

  • 都是用abstract修饰的;抽象方法只有方法签名,不能写方法体。
  • 一个类中定义了抽象方法,这个类必须声明成抽象类。

2、抽象类基本作用是啥?

  • 作为父类,用来被继承的。

3、继承抽象类有哪些要注意?

  • 一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

特征和注意事项

  • 类有的成员(成员变量、方法、构造器)抽象类都具备
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 一个类继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
  • 不能用abstract修饰变量、代码块、构造器。
  • 最重要的特征:得到了抽象方法,失去了创建对象的能力(有得有失)

补充:

final和abstract是什么关系?

  • 互斥关系
  • abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承。
  • 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写。

你可能感兴趣的:(java,intellij-idea,开发语言)