单元5 面向对象基础_第1页
单元5 面向对象基础_第2页
单元5 面向对象基础_第3页
单元5 面向对象基础_第4页
单元5 面向对象基础_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

单元5面向对象基础面向对象基本概念类与对象类的封装构造方法

关键字访问权限Java是面向对象的编程语言,完全支持面向对象的特性。本单元重点介绍面向对象基本概念、类与对象、类的封装、构造方法、this关键字、static关键字和访问权限。单元五面向对象基础教学目标知识目标:技能目标:素养目标:了解面向对象的概念掌握类与对象的定义和使用理解类的封装和使用能够恰当运用类与对象编写程序能够正确运用this关键字和static关键字能够独立完成拓展任务懂得珍惜生命、珍惜感受生命的力量明白如何使自己更有价值熟悉关键字与访问权限5.1知识储备–面向对象基本概念面向对象的概念类与对象的定义和使用类的封装和使用5.1.1面向对象基本概念面向对象是一种程序设计方法,与结构化程序设计方法相比,面向对象更易维护、易复用、易扩展,符合人类认识世界的思维方式。面向对象是把现实中的事务抽象为程序设计中的对象,在Java语言中,常说的一句话是“一切皆对象”。面向对象的基本思想是把需要解决的问题细化成若干个独立的对象,通过对象间的配合、连接和协调能够实现大型复杂系统。5.1.1面向对象基本概念面向对象具有三大特性:封装、继承和多态,下面简单介绍这三大特性。1.封装(Encapsulation)封装是Java面向对象的核心思想,封装有两层含义,一是将事物的属性和行为封装成一个整体(对象),二是信息隐藏和数据安全,将不想让外界知道的信息隐藏起来,避免误操作。例如,平常百姓使用手机,只需要知道手机的使用方法,无需知道手机的构造及工作原理。5.1.1面向对象基本概念2.继承(inheritance)继承是Java面向对象的显著特性,主要用于描述类与类之间的关系,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,同时可扩展新的能力。类的继承与现实生活的财产继承相似,子女可继承父母的财产,同时也可以自己创造财富。通过继承可以减少代码的冗余,提高程序的可维护性、可扩展性和开发效率。5.1.1面向对象基本概念3.多态(polymorphism)多态是Java面向对象的重要特性,一个类被继承后,它的属性、方法具有多种形态,即同一属性或者方法在不同的类中代表着不同含义。例如,同样的积木,不同人拼的东西不同,有人拼汽车,有人拼机枪,有人拼怪兽。5.1.1面向对象基本概念5.1知识储备–类与对象类对象通过对象调用类中成员类与对象是面向对象的最重要、最基本组成元素。类是抽象的,是对象的模板。对象是具体的,是类的实例。例如,学生是一个类,张大壮、李小飞、赵小倩都是学生类的对象。学生类可以有姓名、性别等变量(称为成员变量或属性),同时有看书、写作等行为(称为成员方法)。每一个对象均有具体的姓名、性别等属性(称为对象属性),同时具备类中的行为(称为对象方法),类中的成员变量对应着对象属性,类中的成员方法对应对象方法,类与对象的关系如图5-1所示。5.1.2类与对象5.1.2类与对象1.类类是客观事物的抽象,是具有相同事物特征和行为的统称。类中主要包括成员变量和成员方法,其中成员变量描述事物的特征,通常用名词表示,成员方法描述事物的行为,通常用动词表示。类是Java的重要组成元素,所有Java程序都基于类。类的实质是一种引用数据类型,因为它的本质是数据类型,而不是数据,一般情况下不能被直接操作,只有被实例化为对象时,才会变得可操作,对象创建的前提是定义一个类。5.1.2类与对象(1)类定义的一般格式[修饰符]class类名{

成员变量;

成员方法;}5.1.2类与对象(2)说明修饰符:可选项,通常可以用public、protected、默认(省略)、private来修饰,详见本单元后面内容。class:定义类的关键字,不可缺省。类名:合法的标识符,符合见名知义的原则,首字母大写,组成的多个单词首字母均大写,例如:学生类名Student。一对大括号{}:代表类的主体内容。成员变量:事物的外部特征,可通过对象的属性来获取。成员方法:事物的行为,可通过对象来调用。5.1.2类与对象【例5-1】定义一个学生类Student,需要包括学生的姓名(name)、性别(gender)和年龄(age)成员变量,同时,需要体现学生的看书(read)和写作(write)的行为。(1)新建unit05工程,在工程unit05的src目录下创建包.cvit.example01,在包.cvit.example01下创建类Example01。5.1.2类与对象(2)在example01.java文件中,创建Student类,并撰写代码如图5-3所示。5.1.2类与对象提示:(1)此时的Java程序不能运行,因没有main方法,在文本编辑器视图中也找不到运行“”按钮。(2)Student类定义后,需要有实例化的对象,才能使用类中的属性和方法。(3)类的成员变量,在成员方法中可以直接使用。5.1.2类与对象2. 对象(1)创建对象的一般格式:格式1:类名对象名称=null;对象名称=new类名();格式2:类名对象名称=new类名();5.1.2类与对象(2)说明第一种格式分为两步,第一步声明对象变量,第二步实例化对象,第二种格式是将两条语句合为一条语句来实现。null关键字代表引用类型初值为空,new为实例化对象的关键字,对象名称为合法的标识符,类名后面的小括号中间无需空格。5.1.2类与对象5.1.2类与对象【例5-2】在5-1例题的基础上,实例化Student对象stu1和stu2,并分别使用类中的属性和方法。操作步骤:(1)双击工程资源管理器窗口中的Example01.java文件,在Example01测试类中,定义main方法。(2)在main方法中,实例化对象stu1和stu2,设置对象属性的值,通过对象调用类的方法。(3)在文本编辑器视图中,程序完整的代码如下:5.1.2类与对象//Example01测试类publicclassExample01{

publicstaticvoidmain(String[]args){

Studentstu1=newStudent();

//实例化对象stu1和stu2

Studentstu2=newStudent();

stu1.name="Tony";

//分别为stu1和stu2的属性赋值

stu1.gender="male";

stu1.age=18;

stu2.name="Alice";

stu2.gender="female";

stu2.age=17;

stu1.read();

//通过对象stu1和stu2分别调用类中的方法

stu1.write();

stu2.read();

stu2.write();

}

}5.1.2类与对象

//Student类classStudent{

//定义成员变量

Stringname;

//姓名

Stringgender;

//性别

intage;

//年龄

publicvoidread(){

//定义成员方法read

System.out.println(name+"isreading...");

}

publicvoidwrite(){

//定义成员方法write

System.out.println(name+"iswriting...");

}

}5.1.2类与对象(4)单击运行按钮,运行程序,结果如图5-3所示。运行结果:5.1.2类与对象例5-2通过new关键字实例化了两个Student类的对象stu1和stu2,在栈内存中为stu1和stu2分配内存空间,同时stu1和stu2将指向各自的堆内存空间,如图5-6所示。5.1.2类与对象提示:在同一个.java文件中可以创建多个类,但只能有一个使用public修饰符修饰的类,且类名与.java文件同名。同一个.java中的多个类无先后顺序之分,因为带有main方法的测试类是程序的入口。对象通过“.”运算符访问类的成员变量和成员方法,访问成员变量的格式为,对象名.属性名,访问成员方法的格式为,对象名.方法名()。5.1.2类与对象初学者容易将一个类嵌套到另外一个类中,注意每一类的右半个大括号的位置要放在类的结束处,换句话说,类与类之间是并列关系,如图5-5所示。5.1.2类与对象5.1知识储备–访问权限

public修饰符protected修饰符默认修饰符private修饰符Java中的访问权限,是通过权限修饰符来控制成员能够被访问的范围,权限修饰符能够修饰成员变量、成员方法、构造方法和内部类,不同权限修饰符限制的范围不同。Java的访问权限修饰符有public、protected、缺省修饰符(包内的)和private四种。权限修饰符的权限范围由大到小的顺序为:public、protected、缺省修饰符和private。5.1.3访问权限1.public修饰符(公有的)public所修饰的类、属性和方法具有全局范围的访问权限,如果一个类中的成员被public修饰,该成员可以在所有类中被访问,无论是否在同一包中。2.protected修饰符(保护的)protected修饰符是受保护的访问权限,如果一个类中的成员被protected修饰,该成员只能在本包的类和不同包的子类中被访问。5.1.3访问权限3.缺省修饰符(包内的)缺省修饰符也默认修饰符具有包类的访问权限,如果一个类中的成员缺省访问权限修饰符,该成员只能在本包内的类中被访问。4.private修饰符(私有的)private修饰符是私有的访问权限,如果一个类中的成员被private修饰,该成员只能在本类中被访问。5.1.3访问权限修饰符同一类中同一包中的类不同包的子类不同包的所有类private√缺省√√protected√√√public√√√√权限修饰符的访问范围:5.1.3访问权限5.1知识储备–类的属性封装封装的意义私有化类的属性公有化对应属性的方法Java类的属性封装目的是将属性隐藏起来,避免外部类的误操作,确保代码的复用性和安全性。属性封装是将类中的属性私有化,即使用private来修饰类中的成员变量,并提供使用public修饰的getter和setter方法,外部类可通过公有的方法进行访问。下面分别以封装前、后为例来体会封装的必要性。.1.4类的属性封装5.1.4类的属性封装【例5-3】创建Student类,定义成员变量有name(姓名)、score(入学成绩)两个属性,不进行封装。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example02,在包.cvit.example02下创建类Example02。(2)在Example02.java文件中创建Student类,定义成员变量name和score,定义成员方法info,用于打印输出学生基本信息。(3)编写测试类Example02,定义main方法,在main方法中实例化Student对象,通过使用stu对象的“.”运算符修改成员变量的值,调用学生基本信息方法。(4)文本编辑器视图中,撰写代码如下:5.1.4类的属性封装//创建学生类

classStudent{

//定义成员变量姓名和入学成绩

Stringname;

//姓名

intscore;

//成绩

//定义学生基本信息方法

publicvoidinfo(){

System.out.println("姓名:"+name+";入学成绩:"+score);

}

}

//编辑测试类

publicclassExample02{

publicstaticvoidmain(String[]args){

Studentstu=newStudent();

//实例化Student对象

stu.name="Alice";

//设置stu姓名属性值

stu.score=-100;

//设置入学成绩属性值

stu.info();

//调用学生基本信息方法

}

}成绩为负数5.1.4类的属性封装【例5-3】封装前的Student类,年龄属性(age)可任意修改。运行结果:

5.1.4类的属性封装【例5-4】封装后的Student类,对入学成绩属性进行范围限制,范围为【0,100】之间。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example03,在包.cvit.example03下创建类Example03。(2)在example03.java文件中创建类Student,属性与方法同例5-3,不同的是用private修饰各属性。5.1.4类的属性封装(3)在文本编辑器的Student类内的任意空白处,单击鼠标右键,选择“Generate”命令,如图5-7所示。

图5-7Generate命令5.1.4类的属性封装(4)在弹出的菜单中,选择“GetterandSetter”命令,如图5-8所示。

图5-8GetterandSetter命令5.1.4类的属性封装(5)在弹出的对话框中,选中所有属性,并单击“OK”按钮,如图5-9所示。

图5-9选择需要添加方法的属性5.1.4类的属性封装(6)idea开发工具将自动添加相应的getter和setter方法,分别为getName()、setName()、getScore()和setScore()方法,并将setScore()方法中的代码进行修改,确保入学成绩范围在【0,100】之间。(7)Student类中,定义info(学生基本信息)方法。(8)编写测试类Example03,添加main方法,在main方法中实例化Student对象,通过对象调用属性的setter方法设置属性值,并调用学生基本信息方法。(9)文本编辑器视图中,撰写代码如下:5.1.4类的属性封装

package.cvit.example03;

classStudent{

//

封装后的Student类

privateStringname;

//定义成员变量姓名和入学成绩

privateintscore;

publicStringgetName(){

//定义getter和setter方法

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetScore(){

returnscore;

}

publicvoidsetScore(intscore){

//限制错误成绩输入

if(score<0||score>100){

System.out.println("输入错误,成绩范围为0-100之间。");

}else{

this.score=score;

}

}

publicvoidinfo(){

//定义学生基本信息方法

System.out.println("姓名:"+name+";入学成绩:"+score);

}

}限制成绩范围5.1.4类的属性封装(10)在文本编辑器视图中,单击运行“”按钮,运行程序,结果如图5-10所示。从运行结果看,给出了成绩不能为负数的错误提示,最终成绩为0的原因是score没有获取到任何值,默认值为0。5.1.4类的属性封装提示:面向对象的封装性不只是属性封装,而属性封装是必需的,通过属性封装读者可以更好地理解封装性的概念。通过private修饰的属性,必须要有public修饰的getter和setter方法。如果想输出正确的结果,可以在设置对象成绩属性时,给出【0,100】范围内即可。5.1.4类的属性封装5.1知识储备–构造方法构造方法的特点无参构造方法有参构造方法构造方法(Constructor)是在定义类时创建的特殊方法,用来初始化类的对象,通过new运算符自动调用。1. 构造方法的特点(1)构造方法名称与类名相同(2)构造方法无返回值类型(3)参数个数为0个、1个或者多个(4)只能通过new运算符调用5.1.5构造方法2. 构造方法的种类(1)无参构造方法类的构造方法不要求必须创建,在一个类中没有定义任何构造方法时,Java将自动创建一个无参构造方法,方法体内容为空。如果类中显式地定义了一个或多个构造方法,则Java不再提供默认构造方法。(2)有参构造方法有参构造方法的参数与类的成员变量相关,个数不能超类的成员变量的个数。5.1.5构造方法3. 说明(1)如果构造方法前添加了返回值类型,编译不会出错,但该方法将被当作普通方法使用,无构造方法的功能。(2)有参构造方法可以在实例化对象时,直接为属性赋值,能够初始化数据。(3)构造方法不能被子类继承。(4)在没有介绍构造方法前,使用的都是系统创建的默认构造方法。5.1.5构造方法【例5-5】创建一个学生类Student,三个成员变量分别分为name(姓名)、gender(性别)和age(年龄),一个打印个人信息的方法printInfo,一个无参构造方法和一个有参构造方法,通过构造方法两个对象stu1和stu2,设置属性值后,打印输出个人信息。5.1.5构造方法操作步骤:(1)在工程unit05的src目录下创建包.cvit.example04,在包.cvit.example04下创建类Example04。(2)在example04.java文件中创建类Student。(3)在Student类中定义成员变量、成员方法和构造方法。(4)在Example04类中添加main方法,在main方法中实例化对象stu1和stu2,设置无参构造方法实例化的对象stu1的属性值,并分别调用打印个人信息方法。(5)文本编辑器视图中,撰写代码如下:5.1.5构造方法package.cvit.example04;

classStudent{

//定义学生类

Stringname;

//定义成员变量姓名、性别和年龄

Stringgender;

intage;

Student(){}

//定义无参构造方法

Student(Stringname,Stringgender,intage){

//定义有参构造方法

this.name=name;

//将构造方法中的参数赋值给当前对象

this.gender=gender;

this.age=age;

}

publicvoidprintInfo(){

//定义显示个人信息的方法

System.out.println("姓名:"+name+",性别:"+gender+",年龄"+age+"岁。");

}

}5.1.5构造方法publicclassExample04{

publicstaticvoidmain(String[]args){

Studentstu1=newStudent();

//实例化无参对象stu1

stu1.name="Alice";

//设置stu对象的属性值

stu1.gender="female";

stu1.age=17;

Studentstu2=newStudent("Tony","male",18);

//实例化有参对象stu2

stu1.printInfo();

//分别输出对象的个人信息

stu2.printInfo();

}

}5.1.5构造方法运行结果:5.1.5构造方法提示:若省略无参构造方法,将出现编译错误。通过无参构造方法实例化的对象,对象的属性值需要单独设置。通过有参构造方法实例化的对象,可直接初始化数据,因此,如果需要对实例化对象初始化数据时,通常使用有参构造方法来实现。构造方法可以重载,即不同的构造方法的参数类型和个数可以不同。5.1.5构造方法构造方法的创建可以通过快捷方式完成,在需要创建构造方法的类中,单击鼠标右键,选择“Generate”命令,在弹出的菜单中选择“Construct”命令,在弹出的对话框中选择需要的参数,单击“OK”按钮即可,如图5-13所示。5.1.5构造方法5.1知识储备–this关键字调用本类中的成员变量调用本类中的成员方法调用本类中的构造方法在Java程序开发中,如果出现成员变量(类中)和局部变量(方法中)重名时,根据同名变量就近原则,需要在方法中使用this关键字来区分成员变量和方法变量。使用this关键字调用本类中的属性和方法时,this关键字代表当前对象,哪一个对象调用就代表哪一个对象,例如,学生类中有参构造方法中的this关键字,当实例化对象stu1时,this代表stu1,当实例化对象stu2时,this代表stu2。5.1.6this关键字this关键字主要有3种应用,分别为调用本类中的成员变量、成员方法和构造方法。1.使用this关键字调用本类中的属性(成员变量)如果在成员变量和局部变量含义相同时,使用不同的变量名称容易造成代码混乱,使用相同变量名又出现名称冲突,由于局部变量(方法变量)优先于全局变量(成员变量),因此,使用this关键字调用类中成员变量的方法来解决。5.1.6this关键字【例5-6】使用this关键字区别成员变量和局部变量。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example05,在包.cvit.example05下创建类Example05。(2)在example05.java文件中创建类Student。(3)在Student类中定义成员变量、成员方法和构造方法。(4)在Example05类中添加main方法,在main方法中实例化对象stu1,通过stu1调用打印个人信息方法。(5)文本编辑器视图中,撰写代码如下:5.1.6this关键字package.cvit.example05;

/**

*this关键字调用本类中的属性

*/

//1.定义学生类

classStudent{

Stringname;

//定义成员变量姓名处年龄

intage;

Student(Stringname,intage){

//定义有参构造方法

//--代表本类的成员变量,name--代表构造方法中的局部变量

this.name=name;

//this.age--代表本类的成员变量,age--代表构造方法中的局部变量

this.age=age;

}

//定义显示个人信息的方法

publicvoidprintInfo(){

System.out.println("姓名:"+name+",年龄"+age+"岁。");

}

}5.1.6this关键字【例5-6】使用this关键字区别成员变量和局部变量。publicclassExample05{

publicstaticvoidmain(String[]args){

//2.1实例化对象stu,通过new运算符调用有参构造方法,构造方法中的this关键字代表stu对象

Studentstu=newStudent("张爽",18);

//2.2调用打印个人信息方法

stu.printInfo();}

}

5.1.6this关键字运行结果:5.1.6this关键字提示:如果去掉有参构造方法中的this关键字,即将代码改为name=name;age=age;编译不会出错,但运行结果中的姓名为null,年龄为0,说明构造方法中的赋值没有成功,因为编辑器无法确定哪一个名称代表当前对象的属性。此例中没有单独定义无参构造方法,如果通过无参构造方法实例化对象将报错。2.使用this关键字调用本类中的成员方法this关键字同样可以代表当前对象,调用本类中的成员方法,即通过类中的一个方法调用另外一个方法,用法同使用this关键字调用本类中的属性。5.1.6this关键字3.构造方法是实例化对象时被Java虚拟机自动调用,因此构造方法不能像其它方法一样通过对象来调用,可通过this关键字来调用构造方法。(1)一般格式:this([参数列表]);(2)说明this关键字必须放在构造方法体中的首行,且只能出现一次。参数列表可缺省,各参数之间用逗号分隔。构造方法不能递归调用,避免死循环。不能在两个构造方法不能互相调用。5.1.6this关键字【例5-7】通过this关键字,在无参构造方法中调用有参构造方法。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example06,在包.cvit.example06下创建类Example06。(2)在example06.java文件中创建类Student。(3)在Student类中定义成员变量、成员方法。5.1.6this关键字(4)在Student类中创建无参构造方法和有参构造谅地,并在无参构造方法中调用有参构造方法。(5)在Example06类中添加main方法,在main方法中实例化对象stu1,通过stu1调用打印个人信息方法。(6)文本编辑器视图中,撰写代码如下:5.1.6this关键字package.cvit.example06;

classStudent{

//定义学生类

Stringname;

//定义成员变量姓名,年龄

intage;

Student(){

//定义无参构造方法

this(“Tony”,20);

//调用有参构造方法

}

Student(Stringname,intage){

//定义有参构造方法

this.name=name;

this.age=age;

}

publicvoidprintInfo(){

//定义显示个人信息的方法

System.out.println("姓名:"+name+",年龄"+age+"岁。");

}

}调用有参构造方法5.1.6this关键字publicclassExample06{

publicstaticvoidmain(String[]args){

//2.1通过无参构造方法实例化学生对象

Studentstu=newStudent();

//2.2调用打印个人信息方法

stu.printInfo();

}

}

5.1.6this关键字运行结果:提示:虽然通过无参构造方法实例化的对象,但因为无参构造方法调用了有参构造方法,因此,同样实现了初始化数据的目的。如果想在有参构造方法中调用无参构造方法,直接在有参构造方法体内第一行使用this()即可。5.1.6this关键字5.1知识储备–static关键字静态属性静态方法静态代码块Java中的static关键字用于修饰成员变量和成员方法,被称为静态属性和静态方法,可以通过类名直接访问。静态属性和静态方法不属于任何独立的对象,所有实例化对象共享静态属性和静态方法。1. 静态属性在Java程序中,如果希望某个属性被所有对象共享,可以使用static修饰成员变量,通过类名直接访问。访问的一般格式:类名.属性名;5.1.7static关键字【例5-8】在学生类Student中,增加一个专业静态变量major,赋初值为“软件技术”,编程实现输出专业修改前后各对象信息。(1)在工程unit05的src目录下创建包.cvit.example07,在包.cvit.example07下创建类Example07。(2)在example07.java文件中创建类Student。5.1.7static关键字(3)在Student类中定义成员变量、静态变量、成员方法和构造方法。(4)在Example07类中添加main方法,在main方法中实例化对象stu1和stu2,输出专业修改前各对象信息。(5)通过类名调用静态方法修改专业,并输出修改后各对象信息。(6)文本编辑器视图中,撰写代码如下:5.1.7static关键字package.cvit.example07;

//1.定义学生类

classStudent{

//1.1定义成员变量

Stringname;

//定义变量姓名

staticStringmajor="软件技术";

//定义静态变量

intage;

//定义变量年龄

//1.2定义有参构造方法

Student(Stringname,intage){

this.name=name;

this.age=age;

}

//1.3定义显示个人信息的方法

publicvoidprintInfo(){

System.out.println("姓名:"+name+",专业:"+major+",年龄:"+age+"岁。");

}

}5.1.7static关键字//测试类publicclassExample07{

publicstaticvoidmain(String[]args){

//实例化对象

Studentstu1=newStudent("Alice",17);

Studentstu2=newStudent("Tony",20);

//调用打印个人信息方法

System.out.println("对象的初始信息:");

stu1.printInfo();

stu2.printInfo();

//修改静态变量,通过类名直接调用静态方法

Student.major="大数据技术";

//再次调用打印个人信息方法

System.out.println("专业后的对象信息:");

stu1.printInfo();

stu2.printInfo();

}

}

类名直接调用静态方法5.1.7static关键字运行结果:5.1.7static关键字提示:使用static修饰的成员变量被修改后,所有类的实例对象相应的属性均被修改,实现了数据共享,例如对象stu1和stu2的专业同时被修改了。static只能修饰成员变量,不能修饰方法级或块级变量。静态成员变量可以通过类名.成员变量名直接调用,无需实例化对象。5.1.7static关键字2.静态方法在Java程序中,如果希望通过类名直接调用成员方法,可以使用static修饰的成员方法来实现,通过类名直接访问,访问方法同静态属性。访问的一般格式:类名.方法名([参数列表]);其中的参数列表可缺省,各参数之间用逗号分隔。5.1.7static关键字【例5-9】在学生类中添加一个看书静态方法read,通过类名调用该静态方法。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example08,在包.cvit.example08下创建类Example08。(2)文本编辑器视图中,撰写代码如下:5.1.7static关键字package.cvit.example08;

classStudent{

Stringname;

//姓名

intage;

//年龄

Student(Stringname,intage)

{

//定义有参构造方法

this.name=name;

this.age=age;

}

publicvoidprintInfo(){

//定义显示个人信息的方法

System.out.println("姓名:"+name+",年龄:"+age+"岁。");

}

publicstaticvoidread(){

//定义静态方法read

System.out.println("正在看书...");

}

}静态方法5.1.7static关键字运行结果:提示:静态方法只能访问静态属性和静态方法,不能访问非静态属性和方法。静态方法中不能使用this关键字,例如,read方法中不能使用this关键字调用本类中的属性。5.1.7static关键字3.静态代码块代码块指是用大括号包围起来的一段代码,使用static修饰的代码块被称为静态代码块,静态代码块放置于类中所有方法之外,静态代码块只有在类加载时被执行一次,通常用来初始化数据。【例5-10】静态代码块演示。操作步骤:(1)在工程unit05的src目录下创建包.cvit.example09,在包.cvit.example09下创建类Example09。(2)文本编辑器视图中,撰写代码如下:5.1.7static关键字【例5-10】静态代码块演示。package.cvit.example09;

publicclassExample09{

static{

System.out.println("静态代码块...");

}

publicstaticvoidmain(String[]args){

System.out.println("main方法...");

}

}

静态代码块5.1.7static关键字运行结果:

提示:静态代码块先于main方法执行。一个类中可以有多个静态代码块,在类初次被加载时,依次执行各静态代码块。

5.1.7static关键字5.2任务实现

5.2.1任务1:学生基本信息5.2.2任务2:花的海洋1.任务描述通过类与对象定义学生类Stu

温馨提示

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

最新文档

评论

0/150

提交评论