JAVA实验报告子类与继承(java子类的继承实验问题总结)

http://www.itjxue.com  2023-02-03 04:21  来源:未知  点击次数: 

JAVA中,子类将继承父类的所有属性和方法么~?为什么?

是的,子类将继承父类的非私有的属性和方法。

在JAVA中,子类继承父类的所有方法和属性(构造方法要用关键super([参数])调用);继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。

1、如果给子类i提供get和set 通过get调用的自然是子类的。

2、如果给父类和子类分别提供get和set,调的仍然是子类的,因为方法被重写。

扩展资料

在继承中用到super调用父类的构造

private String name;

private String sex;

public xinxin1(String name,String sex)

{

this.name=name;

this.sex=sex;

}

public void hello(){

System.out.println(“嗨!我是”+name+”我是”+sex+”孩”);

}

关于java中子类继承父类的构造方法

java继承中对构造函数是不继承的,只是调用(隐式或显式)。

举例说明:

public class FatherClass {

public FatherClass() {

System.out.println(100);

}

public FatherClass(int age) {

System.out.println(age);

}

}

public class SonClass extends FatherClass{

public SonClass() {

}

public SonClass(int c) {

System.out.println(1234);

}

public static void main(String[] args) {

SonClass s = new SonClass(66);

}

}

编译后执行结果如下:

分析:SonClass s = new SonClass(66);执行这句时,调用

public SonClass(int c) {

System.out.println(1234);//系统会自动先调用父类的无参构造函数(super())

}

在这个构造函数中,等价于

public SonClass(int c) {

super();//必须是第1行,否则不能编译

System.out.println(1234);

}

所以结果是 100 1234

3.如果子类构造函数是这样写的

public SonClass(int c) {

super(22);//必须是第1行,否则不能编译

//显式调用了super后,系统就不再调用无参的super()了;

System.out.println(1234);

}

执行结果是 22

1234

总结1:构造函数不能继承,只是调用而已。

如果父类没有无参构造函数

创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显式调用父类有参构造函数

如下:

SonClass (){

super(777);//显示调用父类有参构造函数

System.out.println(66);

}

如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();

但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。

总结2:创建有参构造函数后,系统就不再有默认无参构造函数。

如果没有任何构造函数,系统会默认有一个无参构造函数。

JAVA中如何继承子类的子类如题:

Employee.java:

public abstract class Employee {

/**

* 姓名

*/

private String name;

/**

* 年龄

*/

private int age;

/**

* 社保号

*/

private String insurCode;

public Employee(String name, int age, String insurCode) {

this.name = name;

this.age = age;

this.insurCode = insurCode;

}

public abstract String getInfo();

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getInsurCode() {

return insurCode;

}

public void setInsurCode(String insurCode) {

this.insurCode = insurCode;

}

}

================================

SalariedEmployee.java:

public class SalariedEmployee extends Employee {

/**

* 周薪

*/

private double weekSalary;

public SalariedEmployee(String name, int age, String insurCode, double weekSalary) {

super(name, age, insurCode);

this.weekSalary = weekSalary;

}

public String getInfo() {

StringBuffer sb = new StringBuffer();

sb.append("姓名:").append(getName()).append("\r\n");

sb.append("年龄:").append(getAge()).append("\r\n");

sb.append("社保号:").append(getInsurCode()).append("\r\n");

sb.append("周薪:").append(getWeekSalary());

return sb.toString();

}

public double getWeekSalary() {

return weekSalary;

}

public void setWeekSalary(double weekSalary) {

this.weekSalary = weekSalary;

}

}

===========================

HourlyEmployee.java:

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);

this.basicSalary = basicSalary;

this.workHours = workHours;

}

public String getInfo() {

StringBuffer sb = new StringBuffer();

sb.append("姓名:").append(getName()).append("\r\n");

sb.append("年龄:").append(getAge()).append("\r\n");

sb.append("社保号:").append(getInsurCode()).append("\r\n");

sb.append("基本工资:").append(getBasicSalary()).append("\r\n");

sb.append("工作小时数:").append(getWorkHours());

return sb.toString();

}

public double getBasicSalary() {

return basicSalary;

}

public void setBasicSalary(double basicSalary) {

this.basicSalary = basicSalary;

}

public int getWorkHours() {

return workHours;

}

public void setWorkHours(int workHours) {

this.workHours = workHours;

}

}

=======================

CommissionEmployee.java:

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);

this.commissionRate = commissionRate;

this.grossSales = grossSales;

}

public String getInfo() {

StringBuffer sb = new StringBuffer(super.getInfo());

sb.append("\r\n");

sb.append("佣金率:").append(getCommissionRate()).append("\r\n");

sb.append("销售总额:").append(getGrossSales());

return sb.toString();

}

public double getCommissionRate() {

return commissionRate;

}

public void setCommissionRate(double commissionRate) {

this.commissionRate = commissionRate;

}

public double getGrossSales() {

return grossSales;

}

public void setGrossSales(double grossSales) {

this.grossSales = grossSales;

}

}

=========================

BasePlusCommissionEmployee.java:

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);

this.basicSalary = basicSalary;

}

public String getInfo() {

StringBuffer sb = new StringBuffer(super.getInfo());

sb.append("\r\n");

sb.append("基本工资:").append(getBasicSalary());

return sb.toString();

}

public double getBasicSalary() {

return basicSalary;

}

public void setBasicSalary(double basicSalary) {

this.basicSalary = basicSalary;

}

}

==============================

Test.java:

public class Test {

public static void main(String[] args) {

SalariedEmployee se = new SalariedEmployee("张三", 18, "00001", 1800);

System.out.println(se.getInfo());

System.out.println("===================");

HourlyEmployee he = new HourlyEmployee("李四", 22, "00002", 2000, 8);

System.out.println(he.getInfo());

System.out.println("===================");

CommissionEmployee ce = new CommissionEmployee("王五", 19, "00003", 700, 0.8, 9000);

System.out.println(ce.getInfo());

System.out.println("===================");

BasePlusCommissionEmployee bpce = new BasePlusCommissionEmployee("赵六", 35, "00004", 2300, 0.9, 18000, 3000);

System.out.println(bpce.getInfo());

}

}

==============================

输出:

姓名:张三

年龄:18

社保号:00001

周薪:1800.0

===================

姓名:李四

年龄:22

社保号:00002

基本工资:2000.0

工作小时数:8

===================

姓名:王五

年龄:19

社保号:00003

周薪:700.0

佣金率:0.8

销售总额:9000.0

===================

姓名:赵六

年龄:35

社保号:00004

周薪:2300.0

佣金率:0.9

销售总额:18000.0

基本工资:3000.0

java如何实现类的继承?

你好,很高兴回答你的问题。

java实现类的继承是通过下面这样。

假定父类是A,要让子类B继承A类,则B类的定义是下面这样:

public class B extends A{

}

如果有帮助到你,请点击采纳。

java新手求解释,希望高手能给我讲一下继承,主要就是写继承的步骤,父类,子类,都是什么规则。

首先说为什么用继承

一般继承的父类都是抽象的

抽象抽象抽取象的部分,一般继承的子类都是实体化的东西

例如汽车,和宝马X6,汽车是一个大的范围是抽象的,宝马x6是具体的

而父类有子类们共有的属性和方法,子类不仅有父类的属性和方法还有自己独有的属性和方法

一个子类继承一个父类,一个父类可以有多个子类

子类用关键字extends来继承父类(在子类的类名后声明)

并且被继承的父类的访问权限不能为private(私有),也不能用final修饰(终态)

子类继承父类后,可以直接调用父类中除了private(私有)修饰的一切属性和方法(除了构造方法)

子类可以重写父类的方法

父类与子类的构造方法有一些规定(构造方法不能被重写)

(1)当子类构造没有显示调用父类有参构造(用super),也没有显示调用自己的其他构造方法(用this),则隐士调用父类无参构造(这个时候父类就必须有无参构造方法,不然就报错)

(2)子类的构造显示调用父类有参构造,则不调用父类隐士构造

(3)子类构造显示调用自己的其他构造,则符合以上两条

(责任编辑:IT教学网)

更多

推荐Freehand教程文章