抽象类:



把方法体去掉之后,把这个方法变成抽象方法。
然后这个类也会变成抽象类,有抽象方法,那么这个类一定是抽象类。

如果一个类是抽象类,那么这个类不能被实例化,。上边 new Cal就不行。

不管父类的那个方法是不是抽象方法,子类都是重写。
抽象类:
1、抽象方法是没有方法体,如果这个类里面有抽象方法,这个类必须变成抽象类。
2、如果这个类是抽象类,并不要求这个类一定要有抽象方法
3、抽象类里面可以有普通方法,也可以有抽象方法。
4、如果一个类是抽象类,那么这个类就不能被new实例化,只能被其他类继承。
5、抽象方法可以理解为父类(抽象类)定义的一个模板或者规范(自己本身不实现),
子类必须实现这个抽象方法。如果子类不想实现这个方法,那么这个子类也必须要变成抽象类。
接口:
接口是一个纯粹的抽象类(接口里面所有的方法都是抽象方法)
接口就是一个规范,他没有提供任何是实现,具体的功能由实现接口的子类去实现。
接口就是一个规范,可插拔(可以被替换,首先定义一个标准(接口),大家都遵守这个标准,就可以实现互相之间替换)
1、
接口是一个纯粹的抽象类
,接口里面的方法都是抽象方法 public abstract。
2、接口里面所有的属性public static final
final:最终的意思
final变量:这个变量就不能被修改,常量 public static final double PI = 3.1415;
final类:这个类就不能被继承
final方法:这个方法就不能被重写
final也可以修饰类,代表这个类不承可被继
静态属性调用的两种方式:

推荐使用第二种,
类名.属性 因为这样一看这就是个静态类。
静态属性被所有对象所共享,但是又不属于某一个对象。

1.静态方法调用静态属性必须先实例化一个对象,new出来对象才能调用。
2.但是静态属性就可以直接使用。

1.实例方法中可以直接调用实例属性
2.同时也可以调用静态属性,因为静态属性是属于整个类的,静态方法和实例方法都能用,相当于小区的公共设施。
java类里面定义的静态变量和静态方法是属于这个类的,
不属于new出来的Student对象
,
但是可以被所有的对象所使用,
当类加载到内存,静态属性和静态方法就可以调用,这个时候没有new任何对象
。
使用时注意:
1、静态的方法只能访问静态的方法和静态的属性(因为当前对象的实例可以没有创建,所以静态的方法是没办法调用非静态的方法和属性的)
2、静态的方法中不能写this、super关键字(因为当前的对象实例可能还没有创建,代表当前类对象的this还有代表父类对象的super可能都还没有创建)
非静态的属性和方法(实例属性和方法)必须通过new对象访问,而静态的属性和方法是属于类的,在类加载到内存中就可以访问,被所有对象所共享。