java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query

java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query,第1张

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的对象能够获取子类的信息.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9266026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存