final
修饰类,则类不允许被继承
修饰变量,则变量为常量,不允许被再次赋值
修饰方法,则方法不允许被重写
修饰属性,则类的属性不会进行隐式的初始化,也就是类的初始化属性必须有值,或者要在构造方法中赋值,但只能选其一。
super
在子类使用,可代表父类对象,如在子类Student中有方法:
public void method(){
System.out.println( super.age);
}
main函数中的
Student stu = new Student();
stu.method();
输出的会是父类中的属性,若要的子类属性值,则method()方法中super.age 应为 age.
如在子类Student中有方法:
public void mehtod(){
super.study();
}
main函数调用的将是父类中的study(); 将super.study(); 改为 study();将直接调用子类中的study();
创建子类对象时,隐式调用了super。
创建子类对像时,先创建父类对象;创建对象时,先初始化属性,再调用构造函数。
子类的构造过程中一定要调用父类构造方法;
子类构造方法中若没有显示调用父类构造方法,则系统会默认调用父类隐式无参构造方法;
子类中显示调用父类的构造方法用 super(); 并且要放在子类构造函数体中第一行;
若是子类构造函数没用显示调用父类构造方法,父类中也没有无参构造函数,则报错。
object 是所有类的父类
若我们在main 函数中输出类名
System.out.println(子类名);
会发现输出了的是地址(哈希码)--唯一区分对象的.
这是因为在Object类中toString()方法返回的是哈希码。可通过重写toString()来输出对象属性。------可通过eclipse菜单栏中source下generate toString() 生成。它会根据对象的属性帮我们生成输出对象属性的方法。
若我们比较两类名是否相同
类的对象1.equals(类的对象2)----将比较地址,显然不等,若要比较其属性是否相等,则需重写:菜单栏source下generate equals()