十一章.类和对象
1.1对象
Java是一种面对对象的编程语言,因此我们要学会用面向对象的思想考虑问题和编程思想,现实世界中客观的任何事物都可以看做对象,其实每一个对象都有自己的特征,包括静态特征和动态特征…静态特征是可以用某些数据来描述的特征,动态特征是对象所表现的行为或对象所具有的功能,如图所示:
对 象 | 静态特征 | 静态特征的值 | 动态特征 |
---|---|---|---|
"顾客"对象 | 姓名 | 张浩 | |
张浩 | 年龄 | 20 | 购买商品 |
体重 | 60kg | ||
"收银员"对象 | 员工名 | 10001 | 收款 |
李明 | 姓名 | 李明 | |
部门 | 财务部 | 打印菜单 |
通过表格我们可以看出,不同类别的对象具有不同的静态特征和动态特征。
对象的属性和方法:
在面向对象的编程思想中,把对象的静态特征和动态特征分为对象的属性和方法,例如,在上面的例子中,“顾客”
对象有一个属性是姓名,属性值是“张浩”,而方法是用来描述对象动态特征(行为)的一个动作序列。
对象:用来描述客观事物的一个实体,由一组属性和方法构成。
封装:
就是把一个事物包装起来,并尽可能的隐藏内部细节。
1.2类
类和对象的关系:
类和对象的关系就是抽象和具体的关系,类是对象的抽象,对象是类的实例。
插图片:::::::“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“’‘
类是对象的类型:
我们以前学过了很多数据类型,如整型(int),双精度浮点型(double),字符型(char),那么,如果想描述顾客“张浩”,他的数据类型又是什么,是字符型还是字符串类型?其实都不是,“张浩”的类型就是“顾客”,也就是说类就是对象的类型。
1.3面向对象的语言
在面向对象程序设计中,类是程序的基本单位,java是完全面向对象的编程语言,所有程序都是以类为组织单元的.
示例1:
public class HelloWorld{
public static void main (String [] args){
system.out.println("HelloWorld");
}
}
示例1,程序框架最外层的作用就是定义了一个类Hello word,而Hello word就是类名.
java的类模板:
语法:
public calss<类名>{
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
......
属性3的类型 属性3;
//定义方法部分
方法1;
方法2;
......
方法n;
}
其中类的命名也要遵循一定的规则:
<1>.不能使用Java中的关键字
<2>不能包含任何嵌入的空格或点号".",以及下划线"_",字符"$"外的特殊符号
<3>不能以数字开头
规范:
》类名通常由多个单词组成,每个单词的首字母大写。
》另外,类名应该简洁而由意义,尽量使用完整单词,避免使用缩写词,除非该缩写词已被广泛使用,如HTML,HTTP,IP等.
如何定义类:
1.定义类名
通过定义类名得到程序最外层的框架
语法
public class 类名{
//.......
}
2.编写类的属性
通过在类的主体中定义类变量来描述所具有的静态特征,(属性),这些变量称为类的成员变量.
3.编写类的方法
通过在类中定义方法来描述所具有的行为,这些方法称为类的成员方法
语法
访问修饰符 访问值类型 方法名(){
//方法体
}
访问修饰符限制了访问该方法的范围,如public,还有其他的访问修饰符,这个类型可以是基本类型,或者是引用类型,也可以没有访问值,此时必须要用void来描述.方法名一般使用有意义的名字来描述该方法的作用,其命名规则与标识符的命名规则想符号.
示例2:
public class Yx2 {
String schoolName; //中心名称
int classNumber; //教室数目
int labNumber; //机房数目
//定义北大青鸟中心的方法
public void showCenter() {
System.out.println(schoolName+"培训机构中心\n"+"配备:"+classNumber+"教"
+labNumber+"机");
}
}
如何创建和使用对象
定好了类,下面就可以根据类生成对象,称为类的实例化特征,一个实例也就是一个对象,一个类可以生成多个对象。创建对象的语法如下:
语法:
类名 对象名 =new 类名();
在创建类的对象名时,需要使用Java的new关键字.例如,创建School类的一个对象。
S c h o o l c e n t e r = n e w S c h o o l ( ) ; School center=new School(); Schoolcenter=newSchool();
center对象的类型是School 类型。使用new创建对象时,我们并没有给他们的数据成员赋一个特定的值。考虑到每个对象属性值可能是不一样的,所以在创建对象后再给它的数据成员赋值。
语法:
对象名.属性 //引用对象的属性
对象名.方法名 //引用对象的方法
示例 3:
public class Yx3 {
public static void main(String[] args) {
Yx2 center=new Yx2();
System.out.println("***初始化成员变量前***");
center.showCenter();
center.schoolName="北京远航"; //给schoolName属性赋值
center.classNumber=10; //给classNumber属性赋值
center.labNumber=10; //给labNumber属性赋值
System.out.println("\n***初始化成员变量后***");
center.showCenter();
}
}
声明:
main()方法是程序的人口,可以出现在任何一个类中,但要保证一个Java类中只有一个main()方法。因此,我们可以将main()方法写在school类中。但这里,我们将main方法发在了initialSchool类中,目的是使不同的类实现不同的功能。 |
---|
》使用关键字new创建的对象“center”
School center =new School();
》使用“."操作访问类的方法。
center.showCenter();
类型 | 默认值 |
---|---|
int | 0 |
double | 0.0 |
char | “\u0000” |
boolean | false |
String | null |
假如我们定义一个Scho’o’l类,可以用如下代码来实现方法与属性之间的内容:
第一步:
先定义一个学员类:
public class Visitor {
String name;
int age;
public void show() {
Scanner input =new Scanner (System.in);
while (!"n".equals(name)) {
if(age>=18