Java中的其他修饰符

时间:2022-06-11 21:07:27

abstract - 抽象的

  1、修饰类 - 抽象类,如果一个类是抽象的,那么这个类不能被实例化,只能被继承,所以抽象类一般都是父类;

  2、修饰方法 - 抽象方法,如果一个方法是抽象的,那么这个方法不能有实现,含有抽象方法的类一定是抽象类, 但抽象类不一定包含抽象方法;

    - 如果一个非抽象类继承了一个抽象类,则这个非抽象的子类必须实现父类中定义的所有抽象方法,除非这个子类也是抽象的;

    - 如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。 反之,如果一个类为抽象类,那么其中可能有非抽象的方法。

 
    - 如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。  


    所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
    只有将理论被熟练运用在实际的程序设计的过程中之后,才能说理论被完全掌握!


    为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。  
    Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)

static - 静态

  1、修饰属性 - 静态属性,可以用类名引用,而不必用对象来引用,所以静态属性是归类所有的,而不属于某一个具体的对象, 实际上,它是被该类的所有对象所共享;

   - 静态属性又叫做类属性 ,非静态属性又叫做对象属性;

  - 一般情况下,我们都是用类名来引用静态属性,而不用对象来引用;

 Java中的其他修饰符

  2、修饰方法 - 静态方法,可以用类名直接调用,不需要用对象,一般称之为类方法;

  - 静态方法中不能引用类中的非静态成员;

    思考:main方法为什么必须是静态方法?

  3、静态块 - 静态块中的代码是在类型信息加载到方法区后立即被执行的,作用是给静态属性进行初始化的;

  - 静态块中不能引用非静态成员;

    问题 - 单例模式(至多只能被实例化一次) - > 用静态来解决的一个经典问题; com.FirstJava.singleton

      1、如何阻止用户用new关键字任意生成该类的对象 -> 私有的构造方法;

      2、如何让用户得到对象 -> 给用户提供一个方法,用这个方法给用户返回该类对象;

      3、如何保证对象的唯一性 -> 使用静态属性;

final - 最终的

  1、修饰类 - 最终的类,该类不能被继承(目的是这个类不能被扩展,也就是不能被改变);

  2、修饰方法 - 最终的方法,该方法不能被子类重写;

  3、修饰属性 - 称之为常量,常量的命名要求所有字母均大写,其值不能被改变,必须有初始化;

  4、修饰局部变量 - final的局部变量只能被赋值一次;

    内部类 - 在一个类中定义另一个类

      1、内部类是外部类的一个成员,所以所有能够修饰成员的关键字都能够修饰内部类,甚至可以是静态的;

      2、内部类对象可以访问其外部类中的所有成员,包括私有的;

               问题 - 迭代器模式 - 集合类