天天看点

Lesson_for_java_day09--练习--继承、this、super的使用、使用构造方法赋初始值

 练习:

package sonyi;

/*
 * 
 *练习:
 *	目的:练习this,super的使用,构造方法覆初始值,继承初步
 *	步骤:
 *		1、新建一个Company类
 *			属性:姓名,性别,工资(设置为私有)
 *			方法:printMsg();//打印这个部门的人员所有信息
 *		2、新建一个Dept类继承Company
 *			属性:技能
 *			方法:printMsg();//打印这个部门的人员所有信息
 *		3、新建一个Manage类继承Dept
 *			属性:职位
 *			方法:printMsg();//打印这个部门的人员所有信息
 *		4、新建一个测试类
 *			实例化一个Company对象,实例化一个Dept对象,实例化两个Manage对象,
 *				分别打印各自的全部信息。
 */
public class ExtendsDemo {
	public static void main(String[] args) {

		//创建各类的对象,并初始化值
		Company c1 = new Company("张三",'男',2000);
		Company c2 = new Company("小张",'男');
		Dept d = new Dept("小红",'女',3000,"前端");
		Manage m1 = new Manage("李四",'男',2500,"后端","工程师");
		Manage m2 = new Manage("小王",'女',3500,"数据库","数据库工程师");
		
		//打印各对象的全部信息
		c1.printMsg();
		c2.printMsg();
		d.printMsg();
		m1.printMsg();
		m2.printMsg();
	}

}

//创建Company父类
class Company{
	private String name;//设置私有属性
	private char sex;
	private double salary;
	
	public Company(){//无参构造方法
	}
	
	public Company(String name, char sex, double salary) {//重载构造方法(三个参数)
		this.name = name;//this的使用1:调用本类的属性和方法
		this.sex = sex;
		this.salary = salary;
	}	

	public Company(String name, char sex) {	//两个参数的构造方法(重载)
		this(name,sex,0.0);//this的使用2:调用本类的构造方法
	}


	public String getName() {//设置私有属性的获取方法
		return name;
	}
	
	public void setName(String name) {//设置私有属性的赋值方法
		this.name = name;
	}
	
	public char getSex() {
		return sex;
	}
	
	public void setSex(char sex) {
		this.sex = sex;
	}
	
	public double getSalary() {
		return salary;
	}
	
	public void setSalary(double salary) {
		this.salary = salary;
	}
	
	public void printMsg(){
		System.out.println("我的姓名是:" + getName() + ",我的性别是:" + getSex() + 
				",我的工资是:" + getSalary());
	}
}

//创建Company的子类
class Dept extends Company{
	
	private String skill;//设置对象特有的私有属性
	
	Dept(){	
	}
	
	//四个参数的构造函数
	Dept(String name,char sex,double salary,String skill){
		super(name,sex,salary);//super的使用1:调用父类的构造函数,减少重复代码
		this.skill = skill;
	}	
	
	public String getSkill() {
		return skill;
	}

	public void setSkill(String skill) {
		this.skill = skill;
	}
	
	public void printMsg(){//打印该类的所有信息
		super.printMsg();//super的使用2:调用父类的方法,减少重复代码
		System.out.println("\t我的技能是:" + getSkill());
	}
}

//创建Dept的子类
class Manage extends Dept{
	//设置该类特有的私有属性
	private String position;

	Manage(){//无参构造函数	
	}
	
	//五个参数的构造函数
	Manage(String name,char sex,double salary,String skill,String position){
		super(name,sex,salary,skill);//调用父类的构造函数
		this.position = position;
	}
	
	public String getPosition() {//设置私有属性的获取方法
		return position;
	}

	public void setPosition(String position) {//设置私有属性的赋值方法
		this.position = position;
	}
	
	public void printMsg(){//打印该类所有的信息
		super.printMsg();//调用父类的打印方法,减少重复代码
		System.out.println("\t我的职位是:" + getPosition());
	}
	
}