一、任务目标
- 人类的构造函数要具有无参数的构造函数,以及带有姓名、性别、出生日期等参数的构造函数,并在构造函数中输出一段描述xx(姓名)出生的文本。
- 人类描述吃饭的方法(函数)和描述睡觉的方法(函数)。例如睡觉方法的执行体为System.out.println() 函数,此函数输出一段例如“ xx(姓名)往床上躺倒,不久就睡着了……”之类的描述睡觉的文本。
- 实例化出张三和李四两个人类对象(变量),并为之赋初值。
- 在上述人类的基础上派生一个继承自人类的新的学生类,加入学号等学生特有的属性,加入上课、考试等方法,并实例化一个或几个学生类对象,完成这些学生类对象的各种属性和方法的调用。
二、面对对象和类
- 面对对象
面对对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪些相应的属性以及展示这些对象的行为,以解决这些对象面临的问题,这样就在程序开发中引入了面向对象设计的概念,面向对象设计实质上就是对现实世界的对象进行建模操作。 - 类
类就是同一类事物的统称,如果将现实世界中的一个事物抽象城对象,类就是这类对象的统称,如鸟类、家禽类、人类等。类是构造对象是所依赖的规范,如一只鸟有一对翅膀,它可以用这对翅膀飞行,而基本上所有的鸟都具有翅膀这个特性和飞行的技能,这样具有相同特性和行为的一类事物就称为类,类的思想就是这样产生的。
三、“构造人类”应用程序
程序代码:
public class people{ //类名people
private String name; //定义字符串型成员变量name
private String sex; //定义字符串型成员变量sex
private String born; //定义字符串型成员变量born
private String occ; //定义字符串型成员变量occ
public people() //构造无参构造函数
{
}
public people(String name,String sex,String born,String occ) //构造有参构造函数
{
this.name = name; //将参数值赋予类中的成员变量
this.sex = sex;
this.born = born;
this.occ = occ;
System.out.println("人物信息:"); //输出“具体的人物信息”
System.out.println("姓名:"+name+"\n"+"性别:"+sex+"\n"+
"生日:"+born+"\n"+"职业:"+occ+"\n");
}
public void work() //定义“工作”函数,用来描述人物的工作情况
{
System.out.println(name+"的生活:"+"\n");
System.out.println(name+"大学毕业后成为一名"+occ+","+"每天朝9晚6"+"\n");
}
public void sleep() //定义“睡觉函数”,用来描述人物的休息情况
{
System.out.println("辛勤的工作了一天,"+name+"回到家休息,"+"23:00,"+name+"洗漱完毕,往床上一躺,一会儿就进入了梦乡...zzz"+"\n");
}
public void birthday() //定义“生日函数”,用来描述人物的活动情况
{
System.out.println("今天是2011年7月1日,同事们为" +name+ "庆祝生日");
System.out.println("-------------------------------" +
"----------------------------------------------------------");
}
/**
* @param args
* @param male
* @param male
* @param Bob
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
people p1 = new people("张三","男性",1996+"年"+7+"月"+1+"日","程序员"); //实例化对象p1
p1.work(); //实例p1调用“工作函数”
p1.sleep(); //实例p1调用“睡觉函数”
p1.birthday(); //实例p1调用“生日函数”
people p2 = new people("李四","女性",1996+"年"+10+"月"+15+"日","会计"); //实例化对象p2
p2.work(); //实例p2调用“工作函数”
p2.sleep(); //实例p2调用“睡觉函数”
p2.birthday(); //实例p2调用“生日函数”
}
}
运行结果:
四、在“构造人类”的基础上构造“学生类”应用程序
程序代码:
public class people{ //类名people
//特别注意:父类的成员变量定义时,要注意访问权限,使其能够被子类访问
protected String name; //定义字符串型成员变量name
protected String sex; //定义字符串型成员变量sex
protected String born; //定义字符串型成员变量born
protected String occ; //定义字符串型成员变量occ
public people() //构造无参构造函数
{
}
public people(String name,String sex,String born,String occ) //构造有参构造函数
{
this.name = name; //将参数值赋予类中的成员变量
this.sex = sex;
this.born = born;
this.occ = occ;
}
//子类student继承父类people的属性
class student extends people{
private String school; //定义字符串型成员变量school
private String id; //定义字符串型成员变量id
private String major; //定义字符串型成员变量major
//定义子类无参构造函数
public student()
{
}
//定义子类有参构造函数
public student(String name,String sex,String born,String occ,String school,String id,String major){
super(name,sex,born,occ); //super函数将子类的参数传递给父类的构造函数
this.school = school; //将参数值赋予类中的成员变量
this.id = id;
this.major = major;
System.out.println("人物信息:"); //输出“具体的人物信息”
System.out.println("姓名:"+name+"\n"+"性别:"+sex+"\n"+
"生日:"+born+"\n"+"职业:"+occ+"\n"+"学校:"+school+"\n"+
"学号:"+id+"\n"+"专业:"+major+"\n");
}
public void study() //定义“学习函数”,用来描述任务的学习情况
{
System.out.println(name+"的学习:"+"\n");
System.out.println(name+"就读于"+school+","+"学号"+id+","+name+"对"+major+"专业有着浓厚的兴趣"+"\n");
}
public void reward() //定义“奖励函数”,用来描述任务的获奖情况
{
System.out.println(name+"正如自己的学号"+id+"一样不断攀升,"+name+"通过自己的拼搏,各科成绩均名列前茅,获得了国家奖学金");
System.out.println("-------------------------------" +
"----------------------------------------------------------");
}
}
/**
* @param args
* @param male
* @param male
* @param Bob
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
people s = new people(); //父类的外层实例
//子类实例化
student s1 = s.new student("小明","男性",1998+"年"+8+"月"+15+"日","学生","昆明理工大学","123","计算机");
s1.study(); //实例s1调用“学习函数”
s1.reward(); //实例s1调用“奖励函数”
}
}
运行结果: