Static 静态

public class student {
    private static int age; //静态变量
    private double score;//非静态变量
    public static void main(String[] args) {
        student s1 = new student();
        System.out.println(s1.age);
        System.out.println(student.age);
        System.out.println(s1.score);
        System.out.println(student.score);//非静态的不能直接通过类调用
    }
}

代码块

匿名代码块

匿名代码块和构造器都在对象创建的时候,自动运行。因此,匿名代码块一般可以用来赋值初始值。

静态代码块

静态代码块是和类同时执行的,且在整个程序中,只会执行一次。

运行顺序

静态->匿名->构造器

package oop.Demo;

public class Demo2 {
    //匿名代码块,一般可用来赋初始值
    {
        System.out.println("这是一个匿名代码块");
    }
    //静态代码块,跟类一起执行的,整个程序中只执行一次
    static {
        System.out.println("静态代码块");
    }
    public Demo2(){
        System.out.println("构造方法");
    }


    public static void main(String[] args) {
        Demo2 d1 = new Demo2();//每次对象创建,都会先走匿名代码块,再走构造方法
        System.out.println("================");
        Demo2 d2 = new Demo2();

    }
}

java实现类快速实现接口快捷键_System

抽象类与抽象方法

抽象类下才能写抽象方法
抽象类中既可以有抽象方法,也可以有非抽象方法
抽象类不能new出来,只能靠子类实现它。
抽象类也是有构造器的
在子类继承父类抽象类时,父类中的方法需要在子类中重写(ALT+ENTER)
若不在子类中重写,则子类也必须变为抽象类。并由下一级子类实现父类的方法。
使用抽象类的意义:简单化多次使用,提高开发效率

java实现类快速实现接口快捷键_System_02


java实现类快速实现接口快捷键_代码块_03

接口

普通类:只有具体实现
抽象类:既有具体实现,又有(规范)抽象方法
接口:只有规范。将约束和实现分离:”面向接口编程“

接口就是规范。如果你是A,你就能B!例如,如果你是飞机,你就能飞起来。
接口的本质是契约,制定好后大家都必须遵守。
声明类:class,声明接口:interface
interface中的所有方法都是public abstract的
若在接口中定义变量,自动约束为public static final
接口都需要有实现类,一般用接口名+Imp命名
interface可以多继承,即public class A implements B,C{}
接口不能被实例化,没有构造方法

java实现类快速实现接口快捷键_java实现类快速实现接口快捷键_04


java实现类快速实现接口快捷键_抽象类_05


java实现类快速实现接口快捷键_System_06

内部类

case1:
在class1内部再定义一个class2,这个内部类class2可以调用class1中的私有变量,若将内部类改为static,则class2在class1之前进行实例化,无法获得class1中的私有变量。
case2:
在同一个java文件中,同时创建两个classA,classB,一个JAVA文件中只能有一个public class
case3:
在方法里面定义class,局部内部类。可调用方法类的局部私有变量