三大修饰符

abstract关键字:

抽象类,abstract修饰的类,此类不能new对象,但是可以声明引用。主要作用强制使用多态。

Abstract修饰的函数,子类必须重写其方法,否则该子类也是抽象类,换言之抽象方法必须要能被子类重写。

抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类

 

static关键字:

静态属性:整个类共享内存空间,修改一个全部改变。

静态代码块:static{ }

特点:静态方法允许直接访问静态成员,静态方法不能直接访问非静态成员,静态方法中不允许使用this或是super关键字,静态方法可以继承,不能重写,没有多态。,静态代码块在类加载时被执行,且只执行一次。

 

例:

java接口重写和覆盖_接口

final关键字

概念:最后的,不可更改的。

final可修饰的内容:类,方法,变量

final修饰类,此类不能被继承,final修饰的方法不能被重写,final修饰的变量值不能被改写(常量)

final修饰的实例常量赋值位置:显示初始化,动态代码块,构造方法。

静态常量:静态常量不在提供默认值,必须手动赋予初始值。赋值时机:显示初始化,静态代码块。

final 修饰基本类型值不可变,对象不能修改地址。

例:

public class TestFinl {
   public static void main(String[] args) {
      final Student student = new Student();
// student = new Studdent();
   }
}
 
class Student {
   int c = 5;
   final int a;
   static final int b;
   static { // 静态代码块
      b = 4;
// b = 5;
   }
// 动态代码块
   {
a = 3;
// a = 4;
c = 9;
   }
 
   public Student() {
      System.out.println(a + "\t" + b + "\t" + c);
   }
}

 

 

接口:

interface关键字

接口相当于特殊的抽象类,定义了方式,组成部分与抽象类类似 interface 类名{ //公开静态常量,公开抽象方法,建议不要使用公开静态常量}

作用:弥补java单继承,扩充子类能力,支持多实现。

实现接口中的抽象方法时,访问修饰符必须是public

注意:仅可调用接口中所声明的方法,不可调用实现类中独有的方法,可强转回现类本身类型进行独有方法的调用。

特点:类与接口多实现,接口与接口多继承,

优点:1.程序的耦合度降低2. 更自然的使用多态3.设计与实现完全分离 4. 更容易搭建程序框架5.更容易更换具体实现

 

案例:

需求:

/*

  * 定义一个 消费者

  * 定义一个 电脑城老板

 *  定义一个 宠物店老板

 *  定义一个 人类

 *  定义一个猫

 *  定义一个狗

 *  定义一个鼠标

  * 定义一个键盘

 *  定义一个商品

  * 消费者有一个购买行为 (这个行为可以支付给电脑城老板或者宠物店老板,并且可以支付一定的金额)

 *  然后根据支付金额的不同返回的商品 返回的商品不同

  * 需求就是 使用 接口来 实现这个需求的多态

 */

java接口重写和覆盖_恰饭_02