static 详解

  • 静态属性,静态方法都可以用类名直接调用,内存机制可以解释,Static和类同时加载的 所以不需要 new
  • 非静态可以调用静态,但是静态不可以直接调用非静态,
  • 匿名代码块、静态代码块,
public class Person{
    {
        //匿名代码块  因为没有名字,不方便调用
    }
    
    static{
        //静态代码块  因为它跟类一起加载的  调用起来很方便  永久只执行一次 
    }
}
  • 代码执行顺序,静态代码块、匿名代码块、构造方法、
  • 静态导入包,导入后 就可以直接使用
  • 如果一个类被 final 定义了 那么它就不会被继承了 (断子绝孙)

抽象类

  • abstract 在一个类前面加上 abstract 就变成了抽象类 抽象类的所有方法,继承了它的子类,都必须实现
  • 在方法前面就是抽象方法 只有,只有方法名字,没有方法的实现!
  • java中 只有接口是多继承的
  • 抽象类不能new 只能靠子类去实现它;
  • 抽象类可以写普通方法,抽象方法必须写在抽象类中

接口

  • 声明类的关键字是class ,声明接口的关键字是 interface 接口都需要实现类
  • 接口的本质是锲约,就像我们人间的法律一样,制定好后大家都遵守
  • 只有规范!自己无法写方法,专业的约束, 约束和实现分离:面向接口编程
  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是····则必须能···”的思想。如果你是汽车则必须能跑···
  • 接口的精髓是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式锁 研究的,实际上是如何合理的去抽象。
  • 接口中的所有定义其实都是抽象的 public abstract
  • 实现了接口的类,就需要重写接口中的方法
  • 接口中属性定义都是常量,所以很少在接口中定义常量 都是方法

接口作用:

  1. 约束
  2. 定义一些方法,让不同的人实现
  3. public abstract
  4. public static final
  5. 接口不能被实现化,接口中没有构造方法
  6. implements 可以实现多个接口
  7. 必须要重写接口中的方法

内部类

  • 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了,
  • 成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类

一个java文件里可以有多个class 类 但只能有一个 public class类

异常机制 Exception

  • 异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络乱接失败、非法参数等。
  • 异常发生在程序运行期间,它影响了正常的程序执行流程。
  • 异常简单分类:
    1. 检查性异常:最具代表的检查行异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
    1. 运行时异常:运行时异常时可能被程序避免的异常。与检查行异常相反,运行时异常可以在编译时被忽略。
    1. 错误 ERROR: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。




异常处理机制

  • 抛出异常
  • 捕获异常
  • 异常处理五个关键字:try 、catch 、finally 、throw 、 throws
public static void main(String[] args){
    int a = 2;
    int b = 0;
    
    // 快捷键自动生成 Ctrl + Alt + T  (得先选中)
    try {  //try监控区域
        System.out.println(a/b);
    }catch(ArithmeticException e){  //catch 捕获异常     catch可以写很多  但是最大的异常房子最后
        System.out.println("程序出现异常,变量b不能为0");
    }catch(){
    
    }finally{  //处理善后工作
        System.out.println("finally");
    }
    // 这三个都是同时使用的  finally可以不要,  假设	IO,资源,关闭!
}
  • 主动抛出异常
public class Text{
    public static void main(String[] args){
       new Text().text(1,0);
    }
    
    
   //假设这方法中,处理不了这个异常。方法上抛出异常
    public void text(int a,int b){
        if(b==0){ 
            throw new ArithmeticException(); //主动的抛出异常,一般在方法中使用
        }
    }
}

快捷键 Alt + Enter 帮助处理异常