java代码---抽象类的实现

定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量 
1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有), 
再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法, 
该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。 
2)从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外), 
并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。 
同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法, 
并提供一个final sing()方法。 
3)"Manager"类继承"Employee"类,有一个final成员变量"vehicle" 

在main()方法中制造Manager和Employee对象,并测试这些对象的方法。

abstract class Role{
	private String name;                    //私有属性
	private int age;
	private String sex;
	public String info ="i am dad!";
	public String getName(){
		return this.name;
	}
	public void setName(String name){
		this.name = name;
	}
		public int getAge(){
		return this.age;
	}
	public void setAge(int age){
		this.age = age;
	}
		public String getSex(){
		return this.sex;
	}
	public void setSex(String sex){        //set get方法
		this.sex = sex;
	}
	public abstract void play();            //抽象方法
	public Role(String name,int age,String sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

}
class Employee extends Role{                   //继承
	private double salary;                 //私有属性
	private static String ID;
	public String info = "i am son!";
	public double getSalary(){
		return this.salary;
	}
	public void setSalary(double salary){
		this.salary = salary;
	}
	public String getID(){
		return this.ID;
	}
	public void setID(String id){
		this.ID = id;
	}
	public Employee(String name,int age,String sex,double salary,String ID){
		super(name,age,sex);
		this.salary = salary;
		this.ID = ID;
	}
	public void play(){
			System.out.println(super.info);
		System.out.println(this.info);
	}
	final void sing(){
		System.out.println("name:"+this.getName()+
			"\nsex:"+this.getSex()+
			"\nage:"+this.getAge()+
			"\nsalary:"+this.getSalary());
	}
}
class Manager extends Employee{                    //继承
	final String vehicle;
	public Manager(String name,int age,String sex,double salary,String ID,String vehicle){
		super(name,age,sex,salary,ID);
		this.vehicle = "自行车";
	}
}
public class TestAbstract{                        //主方法
	public static void main(String[] args) {
		Employee e = new Employee("GOGING",26,"男",9000,"010");
		e.play();
		e.sing();
		Manager m = new Manager("cleavlove",24,"男",10000,"001"," ");
		m.play();
		m.sing();
		System.out.println("\n\n\n");
	}
}


Java中,与继承-抽象类有以下几个关键点。首先,继承是指一个可以继承自另一个。被继承的被称为父/超/基,而继承其他被称为子。继承使得子可以拥有父中所有的成员(成员变量和成员方法),从而提高了代码的复用性。 其次,当子继承自一个抽象类时,子必须重写父所有的抽象方法,否则该子也必须声明为抽象类。最终,必须有子实现该父抽象方法,否则从最初的父到最终的子都不能创建对象,失去了继承的意义。 一个示例代码如下: ``` public abstract class Animal { public abstract void run(); } public class Cat extends Animal { public void run() { System.out.println("小猫在墙头走~~~"); } } public class CatTest { public static void main(String[] args) { Cat c = new Cat(); c.run(); } } ``` 在上述代码中,Animal是一个抽象类,其中定义了一个抽象方法run。Cat继承自Animal,并且重写了run方法。在CatTest的main方法中,创建了一个Cat对象并调用了run方法。 更多关于Java与继承-抽象类的知识,可以参考Java基础教程之接口的继承与抽象类。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java面向对象基础——继承、抽象类](https://blog.csdn.net/qq_42538127/article/details/115426682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【JavaSe】面向对象篇(六) 抽象类](https://blog.csdn.net/qq_41744145/article/details/100023046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java基础教程之接口的继承与抽象类](https://download.csdn.net/download/weixin_38516270/12808613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值