抽象 abstract 用来修饰类和方法的
1.抽象方法:没有方法体、一定要重写
2.普通类继承抽象类,那么需要重写所有的抽象方法,如果不想都重写抽象方法需要把普通类变成抽象类
3.抽象类一定含有抽象方法?不一定
4.抽象类可以定义构造方法?可以
5.抽象类创建对象?没有对象
6.抽象方法可以被private修饰吗?不能被修饰,抽象方法一定要被重写
7.抽象类目的是为了延展类的继承结构
抽象的意义:对代码的维护和重用。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。具体分析如下:
①.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。
②.当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。
所以,Java中抽象类对于代码的维护和重用有很好的帮助,也是Java面向对象的一个重要体现。
静态 static
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);
}
}
静态对于重载和重写
支持重载
不支持重写:静态方法与类同级,重写与对象一个级别,没有重写。
父子类中允许出现方法签名一致的两个静态方法,没有重写
父子类中允许出现方法签名一致的两个非静态方法,有重写