讨论子类和父类之间的关系
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
}
}
/*
*讨论子类和父类之间方法和属性的调用的区别
*/
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
}
}
相关文章推荐
- 深入理解子类和父类之间关系
- cocos2d-x中的父类和子类之间的继承关系
- 继承的概念:继承是指类与类之间的继承关系 ,子类继承父类,子类可以将父类的属性方法继承下来 网址:www.iphonetrain.com 以下代码是了车类与出租车类 共同继承了Car属性
- 关于子类和父类之间的方法,构造方法调用关系
- 验证当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- Java中子类和父类之间的调用关系
- 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。
- 深入理解子类和父类之间关系
- java异常-父类异常与子类异常之间的捕获关系
- 【Java中子类和父类之间的调用关系】
- 父类和子类之间的关系操作方法
- 父类与子类之间的关系
- 深入理解子类和父类之间关系
- 深入理解子类和父类之间关系
- 子类和父类间的相互调用关系
- 父类和子类的调用关系:先加载父类的静态变量,然后是子类的静态变量。当new一个子类时,加载父类的非静态变量,然后是父类的构造函数,再然后是子类的非静态变量和子类的构造函数
- 子类继承父类的变量和父类原有变量的关系
- C++父类与子类关系以及函数重载、覆盖和隐藏规则
- Java父类和子类的关系
- 子类与父类对象应用关系