Java面向对象
Java面向对象
1、任务简介
本次任务为工程训练基本任务1.2中面向对象的相关知识,其任务内容为完成一个java application 应用程序,描述一个人类。要求如下:
1)、要求此人类必须包含有人的姓名、性别、出生日期等基本属性(变量);
2)、要求此人类描述吃饭的方法(函数)和描述睡觉的方法(函数)。例如睡觉方法的执行体为一个System.out.println() 函数,此函数输出一段例如“ xx(姓名)往床上躺倒,不久就睡着了……”之类的描述睡觉的文本;
3)、要求此人类的构造函数要具有无参数的构造函数,以及带有姓名、性别、出生日期等参数的构造函数,并在构造函数中输出一段描述xx(姓名)出生的文本;
4)、实例化出张三和李四两个人类对象(变量),并为之赋初值;
5)、调用张三、李四等人类对象的各种属性(类成员变量)和方法(函数);
2、关于面向对象程序设计
面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征,通过建立模型而达到的抽象是人们对客体认识的深化,其中我们有一些需要认识的概念:
1)对象(Object) 可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性;
2)类(class) 一个共享相同结构和行为的对象的集合,类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力,类可以为提供模版和结构,一个类的方法和属性被称为“成员”;
3)封装(encapsulation): 第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程,第二层意思:将接口与实现分离的过程;
4)继承 类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为,继承描述了类之间的“是一种”关系,子类可以对基类的行为进行扩展、覆盖、重定义;
5)组合 既是类之间的关系也是对象之间的关系,在这种关系中一个对象或者类包含了其他的对象和类,组合描述了“有”关系;
6)多态 类型理论中的一个概念,一个名称可以表示很多不同类的对象,这些类和一个共同超类有关,因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合;
7)动态绑定 也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定,通常由编译器插入特殊代码来实现,与之对立的是静态类型;
8)静态绑定 也称静态类型,指的是一个对象或者表达式的类型在编译时确定;
9)消息传递 指的是一个对象调用了另一个对象的方法(或者称为成员函数);
10)方法 也称为成员函数,是指对象上的操作,作为类声明的一部分来定义,方法定义了可以对一个对象执行那些操作;
目前我们常用的CPP、Java、Python等语言都是面向对象的。
3、任务代码
1)通过Myeclipse创建一个Object的类,并在其后面创建一个名为person的类来定义变量及函数,供前面的程序调用,在person中我们需要完善各类输出的结果从而方便调用,person下包含有许多知识:
<1>String类,在java中String类是不可变的,对String类的任何改变,都是返回一个新的String类对象;
<2>Static代码块,static代码块一般用于初始化类中的静态变量,该静态代码块在类加载过程中的初始化阶段执行,并且只执行一次,它的优先级高于构造函数;
<3>成员函数,成员函数是由类对象主动调用的,使用点操作符,它有返回值;
<4>构造函数,构造函数(构造方法)是初始化一个类的对象时调用的,它没有返回值,而且名字必须与类的名字一样,构造函数还分为无参数的构造函数和含参数的构造函数;
<5>this,当局部变量与成员变量重名时,可以用关键字this来区分, this代表调用了this所在函数的对象;
2)在Object类中定义了person类后,前面的程序便可以调用person类中定义的变量和成员函数,从而输出张三和李四这两个对象的具体信息;
3)由于我的代码每一句均有注释,故许多知识就不细讲了,任务代码如下:
//java面向对象程序描述一个人类
public class object {//类名
public static void main(String[] args) {//程序主入口函数,带命令行参数
person p=new person();//创建一个名为p的无参变量
person zhangsan=new person("张三","男","1990年6月26号");//创建一个人名为zhangsan的三参对象
person lisi=new person("李四","女","1991年7月24号");//创建一个人名为lisi的三参对象
zhangsan.food="牛肉";//调用成员变量food
zhangsan.game="王者荣耀";//调用成员变量game
zhangsan.run();//调用成员函数run,并输出food和game信息
lisi.food="羊肉";//调用成员变量food
lisi.game="开心消消乐";//调用成员变量game
lisi.run();//调用成员函数run,并输出food和game信息
zhangsan.eatlunch1();//调用成员函数eatlunch1
zhangsan.getsleep1();//调用成员函数getsleep1
lisi.eatlunch2();//调用成员函数eatlunch2
lisi.getsleep2();//调用成员函数getsleep2
}
}
//创建一个person定义变量及成员函数
class person{//一个名为person的类
static{//静态代码块,随着类的加载执行,只执行一次
System.out.println("欢迎来到成员信息展示界面");//输出函数,静态代码块优先级最高
}
String name;//定义一个字符串类型变量name
String sex;//定义一个字符串类型变量sex
String birth;//定义一个字符串类型变量birth
static String country="国籍:中国";//定义一个静态字符串类型变量country
String food;//定义一个字符串类型变量food
String game;//定义一个字符串类型变量game
void run(){//成员函数
System.out.println(name+"爱吃:"+food+"\n"+name+"爱玩:"+game);//输出
}
person(){//无参数的构造函数
System.out.println("\n"+"成员展示:");//输出无参数构造函数内容
}
person(String name,String sex,String birth){//三个参数的构造函数
this.name=name;//当局部变量与成员变量重名时,将局部变量赋给成员变量
System.out.println("姓名:"+name+";"+country+";"+"性别:"+sex+";"+"出生日期:"+birth+";");//输出
}
void getsleep1(){//获取睡觉的成员函数
System.out.println(name+"往床上躺倒,不久就睡着了");//输出睡觉函数的内容
}
void eatlunch1(){//获取吃饭的成员函数
System.out.println(name+"午饭吃了"+food);//输出睡觉函数的内容
}
void getsleep2(){//获取睡觉的成员函数
System.out.println(name+"往床上躺倒,很久都没有睡着");//输出睡觉函数的内容
}
void eatlunch2(){//获取吃饭的成员函数
System.out.println(name+"晚饭吃了"+food);//输出睡觉函数的内容
}
}
4)运行结果如下图:
4、总结
后面还有一个定义学生类的任务,方法可以完全参考以上内容,所以我就不写出来了。通过本程序可以初识Java中面向对象的基本知识,对于我们以后程序的的设计和开发奠定基础。
上一篇: JavaScript 中的面向对象编程
下一篇: Java面向对象--多态