被final修饰的类是不能再被继承
final关键字提高了性能。jvm和java应用都会缓存final变量。
final变量可以在安全的多线程环境下进行共享,而不需要额外的同步开销。
使用final关键字,jvm会对变量,方法及类进行优化。
静态成员是属于类的,因此对其访问不需要创建对象,可以使用<类名> . <静态成员名>的语法调用静态成员变量。
非静态方法可以调用静态方法,反之,静态方法不可以调用非静态方法
static修饰的变量为类属性,全局唯一,所有该类的对象操作都是同一个属性;非静态修饰的变量为对象的属性,不共享。
java不允许多继承
构造函数无法被子类继承,子类的构造函数如果没有手动调用父类的构造函数,则会默认隐式调用super(),即父类无参函数。
构造方法的特征:与类同名,无返回值。
然后super关键字必须定义在子类构造方法的第一条语句,super与this不能出现在同一个构造函数中。
abstract抽象类
抽象方法不能有方法主体。格式如下:
abstract void xxx();
抽象类不能被实例化,因为抽象类中的方法未具体话,是一种不完整的类,所以直接实例化没什么意义。
一旦类中定义了抽象方法,那该类必须声明为abstrac类。
父类是抽象类,那么派生出新类必须实现父类中的抽象方法,否则也必须定义为抽象类
输出B类的test()方法
class A {
public void test() {
System.out.println("A类的test()方法");
}
}
class B extends A {
public void test() {
System.out.println("B类的test()方法");
}
public static void main(String args[]) {
A a = new B(); a.test(); //父类引用指向子类对象
B b = new B(); b.test();
}
}
(数组的值是放在堆里,引用在栈里)