Java面向对象高级特性-继承

涎涎原创约 891 字大约 3 分钟...JavaJava

192-Java面向对象高级特性-继承.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

概念

继承(泛化):

​ 语法:

​ <修饰符> 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面向对象高级特性-继承 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4