类:
事物的集合与抽象,代表所共有的行为和属性。一定要写在同一个包里。
这里出现一新修饰符,protected,限制了在同一类或同一个包可见,与默认修饰符类似,但继承不同。

方法:
无返回值:void 不可省。
主方法:main 程序入口。public static void main(String[] args){}此时有static静态关键字。[static:可修饰静态变量、静态方法。用static修饰的变量,属于类。可用来统计类中对象数,静态变量在整个程序中的同一时刻仅表示为一个值。非静态变量属于对象。静态方法不可以访问非静态变量,但非静态方法可以访问静态变量。因为在内存加载时,静态变量先于非静态。] 通过调用,new出一个新对象。
构造方法:用来对参数进行初始化(清零)。对于无参函数,如果不手动进行也没关系,系统会自动生成。也可手动设置,方法名与类名相同,无返回值,方法里可以没有语句体。有参函数需要在方法后加参数,有参函数不会通过系统自动生成。优先级来说,有参优先于无参函数。

//无参构造
Princess(){
        name=null;
        sex=null;
        age=0;
    }
//有参构造
Princess(String name,String sex,int age){
        this.name=name;
        this.sex=sex;
        this.age=age;
    }

在有参构造中,语句体this.name=name;,this表示当前,.name是类中的名字,最后的name
是方法中输入的参数。
方法重载:一个类中,多个具有不同参数的方法共享同一个方法名称。

对象类型参数传递:
Java只传递值,对于基本类型,直接进行操作。引用类型,操作的对象是引用时所指向的堆内存中的对象。

final关键字:所有用final修饰过的变量值全都不可改,变量名大写。继承类无法覆盖,重载不会受限。不能作为父类。

包:未命名包操作简单但不方便,所以一般采用自命名包。

封装:设置成私有,定义方法更安全可控,可通过get/set来对其进行赋值和打印。

继承:extends关键字,只能继承一个类,除final所修饰的变量,全都可对其属性和方法进行重写。
继承实现:底层通过super实现。用super构造有参方法 super(i),i:调用有参父类。在方法中super必须放在第一行。
多态:一个对象的多个状态。比如,student,即可看做student,也可看做people。

抽象类:为子类提供规范,因为每个子类的具体方法对象不同,所以须各自去定义,抽象类只有在子类存在时才有意义。

//抽象类
public abstract 类名{}

抽象方法没有方法体。
继承抽象类时除非自己也是抽象类,否则需要对所有方法进行重写,用override检测是否重写成功。在IDEA中重写快捷键:ctrl+O。

接口:比抽象还抽象的东西。实现了多重继承。关键字:implements。接口内只有抽象方法和常量。修饰符:默认和public。当在接口内声明变量时,int i=1;将默认为public static final i=1;
多继承:继承多个接口,用implements访问,多个接口用逗号分隔。
接口应用:应用方法时,public abstract。
接口类型引用调用时:接口方法 变量名=实现类;

内部类:类中类。构造内部类使用时,外部类.内部类 变量名=外部类变量名.new 内部类;