1、首先建议你不要传入到Object对象,既然你知道他们有共同的父类(假设名字叫A),那么你就应该传入到A对象。这样你就可以调用A的query方法。
2、如果你一定要用Object对象,那么,你可以
if (xxx instanceof A) {
A a = (A) xxx;
// TODO
}
在上述TODO的位置写上你要执行的 *** 作,其实就是强制类型转换。至于这个条件不满足的时候怎么 *** 作,则是你要考虑的问题了。A表示你的父类,xxx表示你传入的参数名。
Employeejava:
public abstract class Employee {
/
姓名
/
private String name;
/
年龄
/
private int age;
/
社保号
/
private String insurCode;
public Employee(String name, int age, String insurCode) {
thisname = name;
thisage = age;
thisinsurCode = insurCode;
}
public abstract String getInfo();
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
public String getInsurCode() {
return insurCode;
}
public void setInsurCode(String insurCode) {
thisinsurCode = insurCode;
}
}
================================
SalariedEmployeejava:
public class SalariedEmployee extends Employee {
/
周薪
/
private double weekSalary;
public SalariedEmployee(String name, int age, String insurCode, double weekSalary) {
super(name, age, insurCode);
thisweekSalary = weekSalary;
}
public String getInfo() {
StringBuffer sb = new StringBuffer();
sbappend("姓名:")append(getName())append("\r\n");
sbappend("年龄:")append(getAge())append("\r\n");
sbappend("社保号:")append(getInsurCode())append("\r\n");
sbappend("周薪:")append(getWeekSalary());
return sbtoString();
}
public double getWeekSalary() {
return weekSalary;
}
public void setWeekSalary(double weekSalary) {
thisweekSalary = weekSalary;
}
}
===========================
HourlyEmployeejava:
public class HourlyEmployee extends Employee {
/
/
private double basicSalary;
/
工作小时数
/
private int workHours;
public HourlyEmployee(String name, int age, String insurCode, double basicSalary, int workHours) {
super(name, age, insurCode);
thisbasicSalary = basicSalary;
thisworkHours = workHours;
}
public String getInfo() {
StringBuffer sb = new StringBuffer();
sbappend("姓名:")append(getName())append("\r\n");
sbappend("年龄:")append(getAge())append("\r\n");
sbappend("社保号:")append(getInsurCode())append("\r\n");
sbappend("基本工资:")append(getBasicSalary())append("\r\n");
sbappend("工作小时数:")append(getWorkHours());
return sbtoString();
}
public double getBasicSalary() {
return basicSalary;
}
public void setBasicSalary(double basicSalary) {
thisbasicSalary = basicSalary;
}
public int getWorkHours() {
return workHours;
}
public void setWorkHours(int workHours) {
thisworkHours = workHours;
}
}
=======================
CommissionEmployeejava:
public class CommissionEmployee extends SalariedEmployee {
/
佣金率
/
private double commissionRate;
/
销售总额
/
private double grossSales;
public CommissionEmployee(String name, int age, String insurCode, double weekSalary, double commissionRate, double grossSales) {
super(name, age, insurCode, weekSalary);
thiscommissionRate = commissionRate;
thisgrossSales = grossSales;
}
public String getInfo() {
StringBuffer sb = new StringBuffer(supergetInfo());
sbappend("\r\n");
sbappend("佣金率:")append(getCommissionRate())append("\r\n");
sbappend("销售总额:")append(getGrossSales());
return sbtoString();
}
public double getCommissionRate() {
return commissionRate;
}
public void setCommissionRate(double commissionRate) {
thiscommissionRate = commissionRate;
}
public double getGrossSales() {
return grossSales;
}
public void setGrossSales(double grossSales) {
thisgrossSales = grossSales;
}
}
=========================
BasePlusCommissionEmployeejava:
public class BasePlusCommissionEmployee extends CommissionEmployee {
/
基本工资
/
private double basicSalary;
public BasePlusCommissionEmployee(String name, int age, String insurCode,
double weekSalary, double commissionRate, double grossSales, double basicSalary) {
super(name, age, insurCode, weekSalary, commissionRate, grossSales);
thisbasicSalary = basicSalary;
}
public String getInfo() {
StringBuffer sb = new StringBuffer(supergetInfo());
sbappend("\r\n");
sbappend("基本工资:")append(getBasicSalary());
return sbtoString();
}
public double getBasicSalary() {
return basicSalary;
}
public void setBasicSalary(double basicSalary) {
thisbasicSalary = basicSalary;
}
}
==============================
Testjava:
public class Test {
public static void main(String[] args) {
SalariedEmployee se = new SalariedEmployee("张三", 18, "00001", 1800);
Systemoutprintln(segetInfo());
Systemoutprintln("===================");
HourlyEmployee he = new HourlyEmployee("李四", 22, "00002", 2000, 8);
Systemoutprintln(hegetInfo());
Systemoutprintln("===================");
CommissionEmployee ce = new CommissionEmployee("王五", 19, "00003", 700, 08, 9000);
Systemoutprintln(cegetInfo());
Systemoutprintln("===================");
BasePlusCommissionEmployee bpce = new BasePlusCommissionEmployee("赵六", 35, "00004", 2300, 09, 18000, 3000);
Systemoutprintln(bpcegetInfo());
}
}
==============================
输出:
姓名:张三
年龄:18
社保号:00001
周薪:18000
===================
姓名:李四
年龄:22
社保号:00002
基本工资:20000
工作小时数:8
===================
姓名:王五
年龄:19
社保号:00003
周薪:7000
佣金率:08
销售总额:90000
===================
姓名:赵六
年龄:35
社保号:00004
周薪:23000
佣金率:09
销售总额:180000
基本工资:30000
首先要明白异常的抛出与捕获机制:
当我们没有在程序中主动使用throw或throws关键字抛出一个异常时,异常一般都是有JVM,即java虚拟机抛出的,我们所写try catch语句块只是用来捕获异常的。JVM在抛出这个异常信息之前会对异常做封装处理,确定异常时什么类型的异常。比如,此题JVM抛出的就是一个ArithmeticException,然后就查看程序能捕获什么类型的异常(就是catch语句块的参数),如果程序能捕获的异常类型恰好就是这种异常或者包含这个类型,就把这个异常传递给程序处理(本题中就是封装进了e对象中),以便程序能继续运行下去。要是程序没有对这种异常进行捕获或处理,程序就会报错,并终止执行。
由于Exception类是所有异常信息的父类,所以当在catch语句的参数适用Exception 时,表示该程序能够捕获任何类型的异常,当然也包括了ArithmeticException。其实,ArithmeticException是直接继承的RuntimeException,而RuntimeException才是直接继承至Exception,如果把程序中的Exception换成RuntimeException,输出结果是一模一样的。
也许说的有点绕,好好体会下。
继承后子类包含了父类的方法,直接调用就行了,不包括私有成员。
即getChild()不是私有成员,所以直接getChild()就可以
java中父类如何得到子类的对象:
Parent
test3=new
Child();
能的
1、除了JAVA中,子类继承父类的所有方法和属性(构造方法要用关键字super([参数])调用)
另外,当父类的方法或属性被声明为private(私有的)时,子类也是不可以继承的。
2、继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。
以上就是关于java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query全部的内容,包括:java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query、JAVA中如何继承子类的子类如题:、为什么java中Exception的对象能够获取子类的信息.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)