《JAVA程序设计》课件-第五章 类_第1页
《JAVA程序设计》课件-第五章 类_第2页
《JAVA程序设计》课件-第五章 类_第3页
《JAVA程序设计》课件-第五章 类_第4页
《JAVA程序设计》课件-第五章 类_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用类表示学生成绩信息JAVA程序设计任务分析用数组存储学生信息时,若每个学生有各种类型的信息需要保存,单纯用一维或二维数组很难表示出来,此时,可以使用对象数组。相关知识与技术5.1类的定义5.1类的定义一、类和对象的关系类是一种复杂的数据类型,它是将数据和与数据相关的操作封装在一起的集合体。对象是类的实例。如:把“人”看成是一个抽象的类,每一个具体的人就是“人”类中的一个实例,即一个对象。每个人的姓名、年龄、身高、体重等特征可作为“人”类中的数据,吃饭、走路、工作等行为作为“人”类中的方法。对象与类的关系就像变量与类型的关系一样。5.1类的定义二、类的定义格式1)类的定义格式<类声明>

{

<类主体>

}格式:类声明和类主体。分两部分:5.1类的定义二、类的定义格式1)类的定义格式[<修饰符>]class<类名>称[extends<超类>][<implements<接口名>]类声明中包括关键字class,类名及类的属性。格式为:5.1类的定义二、类的定义格式1)类的定义格式类名不能是Java中的关键字,要符合标识符的规定动作。若类名使用英文字母,习惯上,类名的第一个字母是大写的。如People。类名最好容易识别,当类名由几个单词构成,习惯上,每个单词的第一个字母用大写。如BeijingTime,HelloChina。注意:5.1类的定义二、类的定义格式1)类的定义格式一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画行为。类主体用一对大括号括起来,其中有两部分内容构成:5.1类的定义二、类的定义格式1)类的定义格式类主体用一对大括号括起来,其中有两部分内容构成:例:一个“人”类的定义classPeople

{

Stringname;

intage;

doubleheight;

doubleweight;

voidprint()

{

System.out.println("身高:"+height);

}

}5.1类的定义二、类的定义格式2)变量的定义格式Stringname;

intage;例:[<修饰符>]<变量类型><变量名>Java类的状态用成员变量来表示。格式如下:5.1类的定义二、类的定义格式intadd(inta,intb)

{intc=a+b;

returnc;

}例:[<修饰符>]<返回值类型><方法名>([参数列表])[throws<异常类>]

{

<方法体>

}Java类的行为由它的方法实现。格式如下:3)方法的定义格式5.1类的定义三、变量Java中的变量按其定义的位置不同,分为两种:成员变量局部变量5.1类的定义三、变量在类体的变量定义部分所定义的变量称为成员变量局部变量在方法体中定义的变量和方法的参数称为5.1类的定义三、变量成员变量和局部变量可以是Java中的任何一种数据类型。若成员变量不赋初值,数值型则为0或0.0,字符型则为,布尔型则为false,对象则为null。变量名必须符合标识符的命名规则,习惯上,如果使用英文字母,则第一个字母使用小写;如果由多个单词组成,则从第二个单词开始的其他单词的第一个字母使用大写。成员变量在整个类的范围内都有效,而局部变量只在定义它的方法内有效。说明5.1类的定义三、变量如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时效。若想在方法内使用和局部变量同名的成员变量,必须使用关键字this。成员变量又分为实例变量和类变量(也称静态变量)。说明5.1类的定义四、方法方法的定义格式:[<修饰符>]<返回值类型><方法名>([参数列表])[throws<异常类>]

{

<方法体>

}5.1类的定义四、方法例如:intadd(inta,intb)

{intc=a+b;

returnc;

}5.1类的定义四、方法返回值类型可以是任意的Java数据类型,当一个方法不需要返回数据时,方法的类型必须是void。方法的参数是用逗号隔开的一些变量声明,可以是任意的Java数据类型。方法的名字必须符合标识符的规定,习惯上,如果名字使用英文字母,第一个字母是要使用小写。如果由多个单词构成,则从第2个单词开始的其他单词的第1个字母使用大写。说明如:floatgetTrangleArea()

voidsetName(Stringname)5.1类的定义四、方法方法体的内容包括局部变量的定义和合法的Java语句。方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句,即仅在该复合语句中有效,如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句,即仅在该循环语句中有效。说明5.1类的定义五、方法的重载方法重载是多态性的一种。方法重载就是一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。5.1类的定义六、构造方法构造方法是一种特殊的方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。5.1类的定义六、构造方法例如:classPeople{Stringname;intage;doubleheight;doubleweight;People()5.1类的定义六、构造方法例如:{name=“zhangli”;

age=20;

height=1.65;

weight=48;}People(Stringname1,intage1){name=name1;age=age1;

}

}相关知识与技术5.2对象的创建和使用5.2对象的创建和使用一、创建对象类是创建对象的模板,当使用一个类创建了一个对象时,也就说给出了这个类的一个实例。创建对象包括对象的声明和为对象分配内存两个步骤。5.2对象的创建和使用一、创建对象1)对象的声明格式类名对象名字;如:Peoplewangli,zhangping;5.2对象的创建和使用一、创建对象2)为声明的对象分配内存用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法不带参数,什么都不做)。如:wangli=newPeople();

zhangping=newPeople("zhangping",19);5.2对象的创建和使用二、对象的使用通过成员运算符“.”,对象可以实现对变量的访问和对方法的调用。格式:

对象名.成员变量名

对象名.方法名(<参数列表>)5.2对象的创建和使用三、对象的引用和实体当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用(地址),以确保实体由该对象操作使用。5.2对象的创建和使用三、对象的引用和实体Peoplezhangping;zhangping=newPeople("zhangping",20);null未分配实体的对象0XD234zhangping205.2对象的创建和使用三、对象的引用和实体例:若有定义Peoplep1=newPeople("zhang",16),

p2=newPeople("wang",18);0XD234zhang16p10X12ABwang18p25.2对象的创建和使用三、对象的引用和实体若p1=p20XD234zhang16p10XD234p25.2对象的创建和使用四、方法参数在Java中,方法的所有参数都是“传值”调用的,例如:

voidf(intx){......}

调用函数时,要向x传递一个int值,如:f(y),如果在方法中改变了参数x的值,不会影响实参y的值。方法定义时,方法名后面括弧内的参数称为形式参数(简称形参),方法调用时,方法名后面括弧内的参数称为实在参数(简称实参)。5.2对象的创建和使用四、方法参数1基本数据类型做方法参数当形式参数是基本数据类型时,向该参数传递的值的级别不可以高于该参数的级别,如不能向int型参数传递一个float型值,但可以向它传递一个byte型值。5.2对象的创建和使用四、方法参数2Java的引用类型包括对象、数组和接口当形式参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。如果改变形参变量所引用的实体,就会导致实参变量的实体发生同样的变化,因为实参变量和形参变量具有相同的引用,具有相同的实体。但是,改变形参变量的引用,不会改变实参变量的引用。相关知识与技术5.3static关键字5.3static关键字在定义类时,使用static修饰的变量和方法分别称为类变量(静态变量)和类方法(静态方法),没有使用static修饰的变量和方法称为实例变量和实例方法。一个类的类成员是属于这个类的,而不是属于这个类的某个对象,它由这个类所创建的所有对象共同拥有。对于类变量,所有对象的类变量都分配相同的一个内存(实际上只有一个),如果该类的一个对象改变了类变量的值,会影响到其它对象访问类变量时的值。5.3static关键字对于实例变量,不同对象的实例变量将被分配不同的内存,一个对象改变自己的实例变量,不会影响到其他对象的实例变量的值。对于类成员,通常通过类名来访问,也可以通过对象来访问。在类方法中只能访问类成员,不能访问实例成员。相关知识与技术5.4this关键字5.4this关键字this关键字出现在构造方法中,代表使用该构造方法正在创建的对象。this代表当前对象,可以出现在实例方法和构造方法中,但不可以出现在类方法中。this关键字出现在实例方法中,代表正在调用该方法的当前对象。例:this出现在构造方法中。例:this出现在实例方法中。相关知识与技术5.5成员的访问权限5.5成员的访问权限创建某类的一个对象之后,该对象通过“.”运算符访问自己的变量、调用类中的方法时是有一定的限制的。5.5成员的访问权限公有的:public私有的:private保护的:protectedJava语言中有三种访问控制修饰符,用来控制类的成员的访问权限。5.5成员的访问权限一、公有的(public)用public修饰的变量和方法称为公有变量和公有方法。如:classPeople

{publicStringname;

publicintage;

publicvoidprint(){......}

}5.5成员的访问权限一、公有的(public)当在任何一个类中用类People创建了一个对象后,该对象能访问自己的public变量和调用public方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";

p.age=21;

p.print();

}

}5.5成员的访问权限二、私有的(private)用private修饰的变量和方法称为私有变量和私有方法。如:classPeople

{privateStringname;

privateintage;

privatevoidprint(){......}

}5.5成员的访问权限二、私有的(private)当在另外一个类中用类People创建了一个对象后,该对象不能访问自己的私有变量和调用私有方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";//非法

p.age=21;//非法

p.print();//非法

}

}5.5成员的访问权限二、私有的(private)如果一个类中的某个成员变量或方法是私有的,那么在另外一个类中,也不能通过类名来访问这个私有变量或调用这个私有方法。对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有变量和类中的私有方法。5.5成员的访问权限三、友好的(friendly)不用任何修饰符修饰的成员变量和方法称为友好变量和友好方法。如:classPeople

{Stringname;

intage;

voidprint(){......}

}5.5成员的访问权限三、友好的(friendly)当在另外一个类中用类People创建了一个对象后,如果这个类与People类在同一个包中,那么该对象能访问自己的友好成员,也可以通过类名访问类友好成员。如果这个类与People类不在同一个包中,那么该对象将不能访问自己的友好成员。5.5成员的访问权限四、保护的(protected)用protected修饰的变量和方法称为保护变量和保护方法。如:classPeople

{protectedStringname;

protectedintage;

protectedvoidprint(){......}

}5.5成员的访问权限四、保护的(protected)当在另外一个类中用类People创建了一个对象后,如果这个类与People类在同一个包中,那么该对象能访问自己的保护成员,也可以通过类名访问类保护成员。如果这个类与People类不在同一个包中,那么该对象将不能访问自己的保护成员。5.5成员的访问权限五、公有类和友好类若在定义一个类时,class前面加上public关键字,则称这个类为公有类。如果一个类不加public修饰,则称这个类为友好类。如果在另外一个类中使用友好类创建对象,要保证它们是在同一个包中。如:

publicclassA

{......}可以在任何另外一个类中,使用public类来创建对象。任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:classStudentInfo{intscore;Stringname;intnumber;publicStudentInfo(intnumber,Stringname,intscore){ this.number=number; =name; this.score=score;}任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicintgetNumber(){ returnnumber; } publicvoidsetNumber(intnumber){ this.number=number; }任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:publicintgetScore(){ returnscore; } publicvoidsetScore(intscore){ this.score=score; }}任务小结通过完成任务,要求学生理解面向对象的基本概念,掌握类和对象的定义方法及使用,熟悉static,this等关键字的用法。5.2对象的创建和使用一、创建对象类是创建对象的模板,当使用一个类创建了一个对象时,也就说给出了这个类的一个实例。创建对象包括对象的声明和为对象分配内存两个步骤。5.2对象的创建和使用一、创建对象1)对象的声明格式类名对象名字;如:Peoplewangli,zhangping;5.2对象的创建和使用一、创建对象2)为声明的对象分配内存用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法不带参数,什么都不做)。如:wangli=newPeople();

zhangping=newPeople("zhangping",19);5.2对象的创建和使用二、对象的使用通过成员运算符“.”,对象可以实现对变量的访问和对方法的调用。格式:

对象名.成员变量名

对象名.方法名(<参数列表>)5.2对象的创建和使用三、对象的引用和实体当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用(地址),以确保实体由该对象操作使用。5.2对象的创建和使用三、对象的引用和实体Peoplezhangping;zhangping=newPeople("zhangping",20);null未分配实体的对象0XD234zhangping205.2对象的创建和使用三、对象的引用和实体例:若有定义Peoplep1=newPeople("zhang",16),

p2=newPeople("wang",18);0XD234zhang16p10X12ABwang18p25.2对象的创建和使用三、对象的引用和实体若p1=p20XD234zhang16p10XD234p25.2对象的创建和使用四、方法参数在Java中,方法的所有参数都是“传值”调用的,例如:

voidf(intx){......}

调用函数时,要向x传递一个int值,如:f(y),如果在方法中改变了参数x的值,不会影响实参y的值。方法定义时,方法名后面括弧内的参数称为形式参数(简称形参),方法调用时,方法名后面括弧内的参数称为实在参数(简称实参)。5.2对象的创建和使用四、方法参数1基本数据类型做方法参数当形式参数是基本数据类型时,向该参数传递的值的级别不可以高于该参数的级别,如不能向int型参数传递一个float型值,但可以向它传递一个byte型值。5.2对象的创建和使用四、方法参数2Java的引用类型包括对象、数组和接口当形式参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。如果改变形参变量所引用的实体,就会导致实参变量的实体发生同样的变化,因为实参变量和形参变量具有相同的引用,具有相同的实体。但是,改变形参变量的引用,不会改变实参变量的引用。5.3static关键字在定义类时,使用static修饰的变量和方法分别称为类变量(静态变量)和类方法(静态方法),没有使用static修饰的变量和方法称为实例变量和实例方法。一个类的类成员是属于这个类的,而不是属于这个类的某个对象,它由这个类所创建的所有对象共同拥有。对于类变量,所有对象的类变量都分配相同的一个内存(实际上只有一个),如果该类的一个对象改变了类变量的值,会影响到其它对象访问类变量时的值。5.3static关键字对于实例变量,不同对象的实例变量将被分配不同的内存,一个对象改变自己的实例变量,不会影响到其他对象的实例变量的值。对于类成员,通常通过类名来访问,也可以通过对象来访问。在类方法中只能访问类成员,不能访问实例成员。5.4this关键字this关键字出现在构造方法中,代表使用该构造方法正在创建的对象。this代表当前对象,可以出现在实例方法和构造方法中,但不可以出现在类方法中。this关键字出现在实例方法中,代表正在调用该方法的当前对象。例:this出现在构造方法中。例:this出现在实例方法中。5.4this关键字this关键字出现在构造方法中,代表使用该构造方法正在创建的对象。this代表当前对象,可以出现在实例方法和构造方法中,但不可以出现在类方法中。this关键字出现在实例方法中,代表正在调用该方法的当前对象。例:this出现在构造方法中。例:this出现在实例方法中。5.5成员的访问权限创建某类的一个对象之后,该对象通过“.”运算符访问自己的变量、调用类中的方法时是有一定的限制的。5.5成员的访问权限公有的:public私有的:private保护的:protectedJava语言中有三种访问控制修饰符,用来控制类的成员的访问权限。5.5成员的访问权限一、公有的(public)用public修饰的变量和方法称为公有变量和公有方法。如:classPeople

{publicStringname;

publicintage;

publicvoidprint(){......}

}5.5成员的访问权限一、公有的(public)当在任何一个类中用类People创建了一个对象后,该对象能访问自己的public变量和调用public方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";

p.age=21;

p.print();

}

}5.5成员的访问权限二、私有的(private)用private修饰的变量和方法称为私有变量和私有方法。如:classPeople

{privateStringname;

privateintage;

privatevoidprint(){......}

}5.5成员的访问权限二、私有的(private)当在另外一个类中用类People创建了一个对象后,该对象不能访问自己的私有变量和调用私有方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";//非法

p.age=21;//非法

p.print();//非法

}

}5.5成员的访问权限二、私有的(private)如果一个类中的某个成员变量或方法是私有的,那么在另外一个类中,也不能通过类名来访问这个私有变量或调用这个私有方法。对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有变量和类中的私有方法。5.5成员的访问权限三、友好的(friendly)不用任何修饰符修饰的成员变量和方法称为友好变量和友好方法。如:classPeople

{Stringname;

intage;

voidprint(){......}

}5.5成员的访问权限三、友好的(friendly)当在另外一个类中用类People创建了一个对象后,如果这个类与People类在同一个包中,那么该对象能访问自己的友好成员,也可以通过类名访问类友好成员。如果这个类与People类不在同一个包中,那么该对象将不能访问自己的友好成员。5.5成员的访问权限四、保护的(protected)用protected修饰的变量和方法称为保护变量和保护方法。如:classPeople

{protectedStringname;

protectedintage;

protectedvoidprint(){......}

}5.5成员的访问权限四、保护的(protected)当在另外一个类中用类People创建了一个对象后,如果这个类与People类在同一个包中,那么该对象能访问自己的保护成员,也可以通过类名访问类保护成员。如果这个类与People类不在同一个包中,那么该对象将不能访问自己的保护成员。5.5成员的访问权限五、公有类和友好类若在定义一个类时,class前面加上public关键字,则称这个类为公有类。如果一个类不加public修饰,则称这个类为友好类。如果在另外一个类中使用友好类创建对象,要保证它们是在同一个包中。如:

publicclassA

{......}可以在任何另外一个类中,使用public类来创建对象。任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:classStudentInfo{intscore;Stringname;intnumber;publicStudentInfo(intnumber,Stringname,intscore){ this.number=number; =name; this.score=score;}任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicintgetNumber(){ returnnumber; } publicvoidsetNumber(intnumber){ this.number=number; }任务实施假定学生信息有学号,姓名和成绩,定义学生类如下:publicintgetScore(){ returnscore; } publicvoidsetScore(intscore){ this.score=score; }}任务小结通过完成任务,要求学生理解面向对象的基本概念,掌握类和对象的定义方法及使用,熟悉static,this等关键字的用法。任务分析在学生成绩管理系统中,可以用类来表示学生基本信息,对学生信息的各种处理和运算可以用不同的方法来实现。相关知识与技术5.6

类的继承一、子类的定义格式:

[类修饰符]class子类名extends父类名

{......

}如:

classStudentextendsPeople

{......

}注:如果一个类的声明中没有使用extends关键字,则这个类被系统默认为是Object类的直接子类。Object是java.lang包中的类。二、类成员的继承类有两种重要的成员:成员变量和方法。子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。二、类成员的继承子类继承父类的成员变量:能够继承public和protected成员变量。能够继承同一包中的默认修饰符的成员变量。不能继承private成员变量。如果子类成员变量与超类同名,则不能继承。二、类成员的继承能够继承public和protected方法。能够继承同一包中的默认修饰符的方法。不能继承private方法。不能继承超类的构造方法。子类继承父类的方法:如果子类方法与超类方法同名,则不能继承。(被覆盖)相关知识与技术5.7成员变量的隐藏和方法的重写一、成员变量的隐藏子类方法中访问的也是子类重新定义的这个成员变量。如果子类定义的成员变量与从父类继承的成员变量同名,我们就说子类隐藏了父类的成员变量。此时,子类对象访问的是子类重新定义的成员变量。二、方法的重写如果子类定义的方法与从父类继承的方法从名字、返回类型、参数个数和类型都完全相同,则我们说子类重写了从父类继承的方法。子类重写父类的方法时,不可以降低方法的访问权限。(访问权限的级别从高到低依次为:public、protected、友好的、private)。一旦子类重写了从父类继承的方法,那么子类对象调用的一定是这个重写的方法,重写的方法可以操作从父类继承的成员变量也可以操作子类新声明的成员变量。相关知识与技术5.8super关键字5.8

super关键字前面讲过,如果子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了从父类继承的成员变量。当子类中定义了一个方法,并且这个方法的名字、返回类型、参数个数和类型和父类的某个方法完全相同时,子类从父类继承的这个方法将被隐藏,如果想在子类中使用被子类隐藏的成员变量或方法可以使用关键字super。一、使用关键字super调用父类的构造方法子类不能继承父类的构造方法,如果子类想使用父类的构造方法,必须在子类的构造方法中使用,前面加上关键字super来表示,并且super必须是子类构造方法的第一条语句。注意若在子类构造方法中,没有使用关键字super调用父类的某个构造方法,那么默认有super();即调用父类的不带参数的构造方法。二、使用关键字super操作被隐藏的成员变量和方法如果想在子类中使用那些被隐藏了的父类的成员变量或方法就可以使用关键字super。如:super.x、super.f(),使用的就是被子类隐藏的父类的成员变量x和方法f()。相关知识与技术5.9final关键字5.9final关键字final关键字可以修饰类、成员变量和方法中的参数final类不能被继承,即不能有子类。如果一个成员变量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论