面向对象基础(下)
public class Manager {
public String name=“”; public double salary; public Date birthDate; public String department;
public String getDetails() {
… } }
public class Manager extends Employee {
要求: 1.方法声明形式一致(相同的方法名称、参数列表、
返回类型) 2.方法权限不允许缩小 3.覆盖的方法不允许抛出比父类方法更多的异常
例: class Person
{ public String name; public int age;
public void getInfo() {
System.out.println(name); System.out.println(age); } }
2.继承通过entends关键字实现。这种关 系也叫做“is”关系: class A extends B ,
A(子类)is a B(父类)
例:
class Employee {
public String name=“”; public double salary; public Date birthDate; public String getDetails() {…} }
String company=“sun公司”;
public Manager(String name,int age,String company)
{ super(name,age); pany=company;类中继承来的方 法进行改造,把这个过程称为覆盖(也叫重写)
public Manager(String name,int age,String company) {
this(name,age); pany=company; } }
(5) 如果子类构造方法中没有显式调用父类的构 造方法,也没有使用this关键字调用重载的本 类的其它构造方法,则在产生子类的实例对象 时,系统默认调用父类无参的构造方法。在下 面的类B中,定义的构造方法中,写不写super() 语句的效果是一样的。
} public Employee() {} public String getInfo() {
System.out.println(name); System.out.println(age);
} }
class A {} Class B extends A {} Class C extends B {}
(5)进行实例变量的显式初始化,也就是执行在 定义成员变量时就对其进行的赋值语句,如:
class Manager extends Employee {
String company=“sun公司”; ......
}
(6)执行当前构造方法体中的程序代码,如:
class Manager extends Employee {
class Student extends Person {
String school=new String(); public void study()
{ System.out.println("studding");
} public void getInfo() {
super.getInfo(); System.out.println(school); }
(4) 子类继承父类的所有成员变量和成员方法,但不继 承父类的构造方法,在子类的构造方法中,可以使用 语句super(参数列表)调用父类的构造方法。如:我 们为Manager类增加一个构造方法,在这个构造方法 中用super明确指定调用父类的某个构造方法。
class Manager extends Employee {
(3)如果有this调用,则调用相应的重载构造方法(被调 用的重载构造方法又从步骤2开始执行这些流程),被调用 的重载构造方法的执行流程结束后,回到当前构造方法, 当前构造方法直接跳转到(6)去执行。
(4)显式或隐式追溯调用父类的构造方法(一直到Object 类为止,Object类是所有java类的最顶层父类),父类的 构造方法又从步骤(2)开始对父类执行这些流程,父类的 构造方法的执行流程结束后,回到当前构造方法,当前构 造方法继续往下执行。
class B extends A
{
public B( )
{ super( ); }
}
3. 子类对象的实例化过程
对象中的成员变量的初始化是按下述步骤进行的:
(1)分配成员变量的存贮空间并进行默认的初始化, 就是用new关键字产生对象后,对类中的成员变量按系统 默认的值进行初始化赋值。
(2)绑定构造方法,就是用new(实参列表)所传递进的 参数赋值给构造方法中的形式参数。
public static void main(String[] args) {
Person p=new Person(); ="person"; p.age=30; p.getInfo();
Student s=new Student(); ="student"; s.age=16; s.school="清华大学";
public String department; }
完整代码如下:
public class Employee {
public String name; public int age; public Employee(String name,int age) {
=name; this.age=age;
Java实用教程
第4章 面向对象基础(下)
第4章 面向对象程序设计(下)
一.类的继承
1.继承机制: 在面向对象编程里,可以根据已定义的类定义 一个新类,从而实现代码的复用。 其中,被继承的类称父类,由继承而得到的类 称子类。子类具有父类的成员(属性和方法),同时 也可以修改父类的属性或重写父类的方法,并增加新 的属性和方法。