面向对象_抽象类练习学员案例

53 篇文章 0 订阅
46 篇文章 0 订阅
/*
	学生案例
		具体事务:基础班学员,就业班学员
		共性:姓名,年龄,班级,学习,吃饭
		
	分析:从具体到抽象
		基础班学员:
			成员变量:姓名、年龄、班级
			构造方法:无参、带参
			成员方法:学习、吃饭
		就业班学员:
			成员变量:姓名、年龄、班级
			构造方法:无参、带参
			成员方法:学习、吃饭
			
		因为有共性的内容,所以提取出一个父类。学生类。
		但是由于学习的内容不一样所以,学习方法是抽象法,
		而方法是抽象,类就必须定义为抽象的
		
		学员类:
			成员变量:姓名、年龄、班级
			构造方法:无参、带参
			成员方法:学习、吃饭
	
	实现:从抽象到具体
		学员类:
			成员变量:姓名、年龄、班级
			构造方法:无参、带参
			成员方法:getXxx()/setXxx(),学习study(抽象方法)、吃饭eat(方法)
		
		基础班学员:
			继承自学员类
			重写学习方法
		就业班学员:
			继承自学员类
			重写学习方法
*/
//定义抽象学员类
abstract class Student{
	//姓名
	private String name;
	//年龄
	private int age;
	//班级
	private String grand;
	
	public Student(){}
	
	public Student(String name,int age,String grand){
		this.name = name;
		this.age = age;
		this.grand = grand;
	}
	
	//getXxx()/setXxx()
	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 getGrand(){
		return grand;
	}
	
	public void setGrand(String grand){
		this.grand = grand;
	}
	
	//学习study(抽象方法)
	public abstract void study();
	
	//吃饭eat(具体方法)
	public void eat(){
		System.out.println("学习累了,去吃饭");
	}
}

//定义具体基础班学员类
class BasicStudent extends Student{
	public BasicStudent(){}
	
	public BasicStudent(String name,int age,String grand){
		super(name,age,grand);
	}
	
	public void study(){
		System.out.println("基础班学员学习的是JavaSE");
	}
}

//定义具体就业班学员类
class WorkStudent extends Student{
	public WorkStudent(){}
	
	public WorkStudent(String name,int age,String grand){
		super(name,age,grand);
	}
	
	public void study(){
		System.out.println("就业班学员学习的是JavaEE");
	}
}

class AbstractTest3{
	public static void main(String[] args){
		//基础班学员测试
		//多态(测试)
		//方式1
		Student s = new BasicStudent();
		s.setName("小刚");
		s.setAge(20);
		s.setGrand("bdqn_S1");
		System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());
		s.study();
		s.eat();
		System.out.println("---------------------------------");
		//方式2
		s = new BasicStudent("小刚",20,"bdqn_S1");
		System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());
		s.study();
		s.eat();
		System.out.println("---------------------------------");
		//就业班学员测试
		//方式1
		s = new WorkStudent();
		s.setName("小明");
		s.setAge(25);
		s.setGrand("bdqn_Y2");
		System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());
		s.study();
		s.eat();
		System.out.println("---------------------------------");
		//方式2
		s = new BasicStudent("小明",25,"bdqn_Y2");
		System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getGrand());
		s.study();
		s.eat();
		System.out.println("---------------------------------");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值