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) ;