1. 封装
隐藏内部复杂的代码实现,仅向外暴露简单的接口,以便用户使用。
高内聚,低耦合。
不同修饰符的权限范围:
2. 继承
使用extends,子类继承父类的属性/方法,提高代码的复用率。
几个问题:
1)子类是否可以重写父类的构造方法?
不能。子类可以继承父类的一般方法,但不能继承父类的构造方法,也不能对父类的构造方法进行重写,在使用子类构造方法常见子类对象时,编译器会自动调用父类的无参构造方法(在子类构造方法的第一行存在隐式参数super),而若需要调用父类的其他构造方法,可以通过super(实参)来调用。
2)子类重写父类方法时的几个注意
(1) 子类方法的访问权限应>=父类的访问权限
(2) jdk1.5以后子类重写方法的返回值可以进行修改,但子类重写方法的返回值应为父类方法返回值的子类。
(3)继承的内存分析
package Test;
/**
* 测试继承中的几个问题
* 关于子类创建新实例时构造函数的调用问题
* @author Administrator
*
*/
public class TestExtends {
public static void main(String[] args) {
Son s = new Son();
}
}
class Grandpa{
public Grandpa() {
System.out.println("Grandpa's Constructor");
}
}
class Father extends Grandpa{
public Father() {
System.out.println("Father's Constructor");
}
}
class Son extends Father{
public Son() {
System.out.println("Son's Constructor");
}
}
3. 多态
父类引用指向子类对象,方法的重写。多态的实现依赖于抽象类和接口。
抽象类:存在至少一个抽象方法;
接口:接口内的方法全部为抽象方法和常量;