Java面向对象高级特性-继承
192-Java面向对象高级特性-继承.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
概念
继承(泛化):
语法:
<修饰符> class 子类(派生类) extends 父类(超类、基类)
{
}
特点:
1.复用父类的所有非private修饰的属性与方法
2.扩充自有的属性与方法
注意:
1.只允许单继承,一个子类只允许有一个直接父类,但是一个父类可以有多个子类
public class Worker extends Employee{}
public class Officer extends Employee{}
2.可以变相的"多继承"
public class Officer extends Employee{}
public class Worker extends Officer{}
Worker(孙子) -> Officer(爸爸) -> Employee(爷爷)
此时,Worker可以继承Officer与Employee两个类中所有的非private修饰的属性与方法
3.Object是所有类的超级父类,而且是java语言中唯一一个没有父类的超级类
------------------------------------------------------------------------
子类实例化的过程:父类先实例化,子类再实例化
------------------------------------------------------------------------
super():
条件: 1.基于继承关系
作用: 调用父类的构造器
注意:
1.只能出现在子类的构造器中,且必须是第一行
2.super()中的参数,决定了调用父类哪个构造器
3.如果子类构造器中没有出现super,那么编译器会默认加上super(),
即调用父类的空构造器,如果父类没有空构造器,编译器提示错误。
this():
条件:1.基于当前类
作用:调用类自己的构造器
super:表示父类的引用
this:表示类自身的引用
示例代码
package com.tencent.chapter07.继承;
//员工:总的父类
public class Employee extends Object{
//属性(成员变量)
String name;
String birth;
double salary;
//无参构造函数
public Employee()
{
System.out.println("父类实例化----new Employee()");
}
//带参数构造函数
public Employee(String name,String birth,double salary)
{
this.name = name;
this.birth = birth;
this.salary = salary;
}
//行为(成员方法)
public void getDetail()
{
System.out.println("name:" + name + " birth:" + birth + " salary:" + salary);
}
public double getSalary()
{
return salary;
}
}
package com.tencent.chapter07.继承;
/**
* <p>Title: Officer</p>
* <p>
* Description:
* //员工:在办公室办公的员工
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class Officer extends Employee{
//属性(成员变量)
String department;
//无参构造函数
public Officer()
{
super();//1.只能出现在子类的构造器中,且必须是第一行
System.out.println("子类实例化----new Officer()");
}
//带参数构造函数
public Officer(String name,String birth,double salary,String department)
{
super(name, birth, salary);
/*this.name = name;
this.birth = birth;
this.salary = salary;*/
this.department = department;
}
//行为(成员方法)
public void vehicleAllowance()
{
System.out.println("Officer的交通补贴:300");
}
}
package com.tencent.chapter07.继承;
public class Test {
public static void main(String[] args) {
/**
* Worker
*/
/*Worker zhuzi = new Worker();
//访问父类的属性
zhuzi.name = "大柱子";
zhuzi.birth = "2010-01-01";
zhuzi.salary = 100;
//访问父类的方法
zhuzi.getDetail();
//访问子类自有的方法
zhuzi.dressAllowance();*/
/**
* 子类实例化的过程:先实例化父类,再实例化子类
*
* 父类实例化----new Employee()
子类实例化----new Officer()
*/
Officer lisi = new Officer();
lisi.getDetail();
}
}
package com.tencent.chapter07.继承;
//员工:不是在办公室办公的员工
public class Worker extends Employee{
//属性(成员变量)
//行为(成员方法)
public void dressAllowance()
{
System.out.println("Worker的服装补贴:300");
}
}
分割线
相关信息
以上就是我关于 Java面向对象高级特性-继承 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。