您的位置:首页 > 其它

讨论子类和父类之间的关系

2017-07-11 09:59 302 查看
package com.java.test;

/*

 *讨论子类和父类之间方法和属性的调用的区别 

 */

class Foo{
public int a=3;
public void addFive(){
a=+5;
System.out.print("f");
}

}

class Bar extends Foo{
public int a=8;
public void addFive(){
this.a+=5;
System.out.print("b");
}

}

/**

 * 讨论子类和父类的访问权限问题

 * @author qiuzhiwen

 *

 */

abstract  class Employee{
protected abstract double getAmount();
public double getCommision(){
return getAmount()*0.15;
}

}

class Sales extends Employee{
//double getAmount(){ return 123.0;}//默认为default权限小于protected,不可重写父类protected方法
//public double getAmount(){return 123.0;}//可以重写父类方法
//private double getAmount(){return 1243.0;}//不可以重写父类方法,private权限小于protected
protected double getAmount(){return 123.0;}//可以重写父类方法
/**
* 总结:子类重写父类的方法时,方法的修饰权限要大于或者等于父类的方法修饰权限
*/

}

/**

 * 讨论子类和父类的构造函数

 * @author qiuzhiwen

 *

 */

class Emp{
String name;
double salary;
//public Emp(){}
public Emp(String name,double salary){
this.name=name;
this.salary=salary;
}

}

class Sale extends Emp{

    double commission;

    //public Sale(){super();}//编译正确
public Sale(String name, double salary,double commission) {
//super();//编译错误,父类没有无参构造方法
super(name, salary);//调用父类的构造方法
this.commission=commission;
}

/**
* 总结:super()只能调用父类的无参构造方法,当父类没有无参构造方法时,则无法调用
*/

}

public class Test2 {
public static void main(String[] args) {
Foo f=new Bar();
f.addFive();//方法调用的是子类方法
System.out.println(f.a);//属性调用的是父类属性
//输出结果:b3
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: