JAVA实验报告子类与继承(java子类的继承实验问题总结)
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)子类构造显示调用自己的其他构造,则符合以上两条