面向对象(高级)一 下载本文

System.out.println(\ } };

出现了以下的错误提示:

OODemo09.java:8: B 中的 print() 无法覆盖 A 中的 print();正在尝试指定更低的访问权限;为 public void print(){ ^ 1 错误 2、 代码二 class A{ void print(){

System.out.println(\ } };

class B extends A{ public void print(){

System.out.println(\ } };

权限扩大,可以 3、 代码三 class A{

private void print(){

System.out.println(\ } };

class B extends A{ void print(){

System.out.println(\ } };

以上的代码并不是真正的覆写,实际上在B类中此时,就相当于定义了一个新的方法。如果不清楚,可以观察以下代码: class A{

private void print(){

System.out.println(\ }

public void fun(){ print() ; } };

class B extends A{ void print(){

System.out.println(\ } };

public class OODemo12{

public static void main(String args[]){ B b = new B() ; b.fun() ; } };

在方法的覆写概念中,也可以使用super关键字,调用父类中的指定方法。 class A{

public void print(){

System.out.println(\ } };

class B extends A{ public void print(){ super.print() ;

System.out.println(\ } };

public class OODemo13{

public static void main(String args[]){ B b = new B() ; b.print() ; } };

3.4.2、属性也是可以覆写的

子类也可以覆写父类中的属性,只是此种操作一般不常见,代码如下: class A{

String name = \};

class B extends A{

String name = \ public void print(){

System.out.println(name) ; } };

public class OODemo14{

public static void main(String args[]){ B b = new B() ; b.print() ; } };

3.4.3、覆写的应用

使用覆写的概念修改之前的程序,是之前的程序变的更合理一些: class Person{

private String name ; private int age ;

public Person(String name,int age){ this.setName(name) ; this.setAge(age) ; }

public void setName(String name){ this.name = name ; }

public void setAge(int age){ this.age = age ; }

public String getName(){ return this.name ; }

public int getAge(){ return this.age ; }

public String getInfo(){

return \姓名:\,年龄:\ } };

class Student extends Person{ private String school ;

public Student(String name,int age,String school){ super(name,age) ;

this.setSchool(school) ; }

public void setSchool(String school){ this.school = school ; }

public String getSchool(){ return this.school ; }

public String getInfo(){

return super.getInfo() + \;学校:\ } };

public class OODemo15{

public static void main(String args[]){

Student s = new Student(\张三\北京大学\

System.out.println(s.getInfo()) ; } };

3.5、继承练习 3.5.1、练习一

定义员工类,具有姓名,年龄,性别属性,并具有构造方法,显示数据方法,定义管理层类,并有自己的属性:职务,年薪。定义职员类,并有自己的属性:所属部门,月薪。 class Employee{ private String name ; private int age ; private String sex ;

public Employee(String name,int age,String sex){ this.setName(name) ; this.setAge(age) ; this.setSex(sex) ; }

public void setName(String name){ this.name = name ; }

public void setAge(int age){ this.age = age ; }

public void setSex(String sex){ this.sex = sex ; }

public String getSex(){ return this.sex ; }

public String getName(){ return this.name ; }

public int getAge(){ return this.age ; }

public String getInfo(){

return \姓名:\,年龄:\,性别:\ } };

class Manager extends Employee{ private String job ; private float income ;

public Manager(String name,int age,String sex,String job,float income){ super(name,age,sex) ; this.setJob(job) ;