类 继承
class A {
public String name ;
private int age; //此属性不可以被继承
public void getInfo(){
System.out.println(name+"=="+age);
}
}
class B extends A{
public String school;
public void getInfo(){
System.out.println(name+"=="+age+"==="+school);
}
}
类B继承类A,自动拥有类A共有的属性、可以调用公有的方法。
类B也可以覆盖类A的方法,如果重写之后还想调用父类的方法,可以使用 super.方法名。
super()和this()不可以同时出现,且两个方法必须放在构造方法的第一行。
final
final关键字可以修饰 类、成员属性和成员方法;表示常量。
final修饰的类不可以被继承, final修饰的方法不可以被覆盖,final修饰的属性如果不是静态(static)可以在定义或者构造方法中赋初始值,但一经赋值不可以再修改,如果是静态变量,则只能在定义的时候赋初始值。
抽象类(abstract)
抽象类和抽象方法都使用abstract关键字修饰。
包含抽象方法的类必须定义为抽象类,但抽象类中的方法不一定都是抽象方法
抽象类可以被继承,但继承的子类必须覆盖父类的所有抽象方法,如果有一个没被覆盖,则子类仍然是抽象类,需要abstract修饰。
抽象类不可以创建实例化对象。
abstract class A{
public void aa(){
}
public abstract void bb(); // 抽象方法不能有大括号
}
接口(interface)
如果一个抽象类中的成员方法都是抽象方法,则可以通过接口的方式来实现。接口是特殊的抽象类。
接口是抽象方法和常量值的定义的集合。
接口中的方法都是public访问类型。变量默认都是 public static final 修饰的。
接口可以被继承(extends),也可以别引用(implements)
继承只能继承一个类,引用可以引用多个类,用逗号分隔。 继承一定要在引用前面。
普通的类继承或引用接口,需要实现接口中的所有抽象方法。抽象类可以继承或引用接口,实现部分方法。