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

xiaoxiao2021-02-28  131

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 } }
转载请注明原文地址: https://www.6miu.com/read-51109.html

最新回复(0)