天天看点

Java --- 抽象和静态

抽象 abstract 用来修饰类和方法的

1.抽象方法:没有方法体、一定要重写

2.普通类继承抽象类,那么需要重写所有的抽象方法,如果不想都重写抽象方法需要把普通类变成抽象类

3.抽象类一定含有抽象方法?不一定

4.抽象类可以定义构造方法?可以

5.抽象类创建对象?没有对象

6.抽象方法可以被private修饰吗?不能被修饰,抽象方法一定要被重写

7.抽象类目的是为了延展类的继承结构

抽象的意义:对代码的维护和重用。

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。具体分析如下:

①.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。

比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。

②.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。

比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。

所以,Java中抽象类对于代码的维护和重用有很好的帮助,也是Java面向对象的一个重要体现。

静态 static

Java --- 抽象和静态

1.static修饰成员变量

静态变量是随着类的加载(静态常量池)而加载到静态区,与类同级,也叫类变量,可以通过类名.形式(常用)来调用静态变量也可以通过对象调用。存储在静态区的静态变量会被赋予系统默认初始值。无论创建多少个对象都会共享同一个静态变量。

方法中可以定义静态变量?不能 方法里面定义的内容只有被调用时才会被加载,静态变量与类同级,所以不能定义。

2.静态方法

静态方法随着类的加载而加载到静态区,与类同级,也叫类方法,可以通过类名.形式来调用也可以通过对象来调用。静态区不会给静态方法赋予系统默认初始值,静态方法被调用加载到栈中来执行。

静态方法可以定义静态变量?不可以 方法里面定义的内容只有被调用时才会被加载,静态变量与类同级,所以不能定义。

静态信息只能直接使用静态信息,非静态信息可以直接使用静态信息以及非静态信息

```java
public class StaticDemo2 {

    int i=1;

    static int j=2;

    public void m(){

        //非静态方法可以直接使用非静态变量

        System.out.println(i);

        //非静态方法可以直接使用静态变量

        System.out.println(j);

    }

    public static void n(){

        //静态方法不可以直接使用非静态变量

        //System.out.println(i);

        //静态方法可以直接使用静态变量

        System.out.println(j);


    }
}
           

静态对于重载和重写

支持重载

不支持重写:静态方法与类同级,重写与对象一个级别,没有重写。

父子类中允许出现方法签名一致的两个静态方法,没有重写

父子类中允许出现方法签名一致的两个非静态方法,有重写