extends
继承是java面向对象的三大特性之一,是java实现代码重用的重要手段之一。
java中只支持单继承,每个类只能有一个直接父类。
那么子类继承父类会得到父类的哪些特性呢:
- 继承public和protected修饰的属性值和方法,无论子类父类是否在同一个包里。
- 继承默认权限修饰符的属性和方法,但子类和父类必须在同一个包里。
- 无法继承private修饰的属性值和方法。
- 无法继承父类的构造方法。
方法的重写
根据需求对从父类集成的方法重新编写,称为方法重写护着方法覆盖。必须满足以下要求:
- 必须有相同的方法名
- 必须具有相同的参数列表
- 返回值类型必须相同或是其子类
- 不能缩小被重写方法的访问权限
方法重载和方法重写有什么区别和联系??
重载涉及到同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符权限无关。
重写涉及到子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同(或是其子类)、访问权限修饰符不能严格于父类。
super关键字
super代表当前对象的直接父类对象的默认引用,在子类中可以通过super关键字来访问父类成员。
super注意事项:
- super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。
- 可以访问父类成员,如父类属性、方法、构造方法。
- 注意访问权限的限制,无法访问private修饰的成员。
Object类的重写
所有java类都直接或者间接地继承了java.lang.Object类。在定义一个类时,没有使用extends关键字,也就没有显示的继承某个类这个类直接继承Object类。
继承条件下的构造方法调用关系
- 如果子类的构造方法中没有super调用父类方法也没有this调用本类相关方法,则默认会先调用父类的无参构造。在此情况下有无super都一样。
- 如果子类的构造方法中通过super调用了父类的有参构造,则不会调用父类的无参构造
- 如果子类this调用,则会在相应构造方法中应用以上两条规则。
- 如果存在多级继承关系,则在创建一个子类对象时,会向更高一级父类应用,直到Object的无参构造为止。
- 执行顺序:父类和子类的静态代码块–父类的构造代码块–父类的构造函数–子类的构造代码块–子类的构造方法。子类的无参构造方法默认会super()。
代码实例:
public class a {
public a(){
System.out.println("a的无参构造");
}
public a(String name){
System.out.println("a的带参构造");
}
static{
System.out.println("a的静态代码块");
}
{
System.out.println("a的代码块");
}
public void as(){
System.out.println("a的方法");
}
}
public class b extends a {
public b(){
System.out.println("b的无参构造");
}
public b(String name){
System.out.println("b的带参构造");
}
static{
System.out.println("b的静态代码块");
}
{
System.out.println("b的代码块");
}
public void sd(){
System.out.println("b的方法");
}
public static void main(String[] args) {
b b1=new b();
b1.sd();
}
}
输出如下:
a的静态代码块
b的静态代码块
a的代码块
a的无参构造
b的代码块
b的无参构造
b的方法
abstract和final修饰符
abstract修饰的抽象类和抽象方法特点:
- 抽象类和方法都通过abstract修饰符修饰。
- 抽象类中可以有0个或多个抽象方法。
- 抽象方法只有方法声明,没有方法实现。public abstract void print();
- 有抽象方法的类必须声明为抽象类。
- 抽象类的子类必须重写所有的抽象方法才能够实例化,否则子类还是一个抽象类。
- 抽象方法可以有构造方法。可以被本类中的其他构造方法调用,没有private的话也可以被子类构造调用。
final修饰符方法特点:
1.用final修饰的类,不能再被继承。
2. 用final修饰的方法不能被子类重写。
3. final修饰的变量将变成常量。
4. final不能修饰构造方法。
abstract和final可以对比记忆
static修饰符
http://blog.csdn.net/u012152619/article/details/46003303
清晰到位。