java课件-第4章类和对象_第1页
java课件-第4章类和对象_第2页
java课件-第4章类和对象_第3页
java课件-第4章类和对象_第4页
java课件-第4章类和对象_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

学习目标:理解面

象思想掌握Java类的定义和使用掌握Java对象的定义和使用掌握Java修饰符的含义掌握this关键字4.1

象的基本概念1.对象:具有某些特殊属性(数据)和行为方式(方法)的实体。可以是有生命的

;可以是无生命的

;可以是一个抽象的概念。两个特征:属性和行为如:一个人的属性有:

等行为有:唱歌、打球、骑车、学习等。对象的表示模型:成员变量(属性)方

法(行为)54.1

象的基本概念一个消息由

面内容组成:消息的接收者,即消息的目标对象;接收对象采用的方法;执行方法所需用的参数。对象B对象A2.消息:对象和对象之间是通过传递消息来完成相互通信的。message3.类:类是具有共同属性和行为的对象的抽象。类对象抽象实例化行为属性方法数据4.1

象的基本概念4.1

面象的基本概念4、面

象的基本特征封装:将数据成员和属于此数据的操作方法,放在同一个实体或对象中。对象A好处:模块化、信息隐藏私有数据方法方法数据公有数据对象B4.1

面象的基本概念好处:代码复用(Java只允许单继承)4、面

象的基本特征继承:子类利用父类中定义的方法和变量就像它们属于子类本身一样。自行车(超类或父类)(次类或子类)山地车双人自行车4.1

面象的基本概念4、面象的基本特征多态:一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程与返回值也可能会不同。类void show(int

num)void

show(double

num)void show(int

num1, float

num2)1231.23123,1.23面

象编程:分析问题中有哪些对象从对象抽象出类定义类编程时根据需要动态生成对象4.1

面象的基本概念为什象符合人们思维方式?4.2.1

类的定义[类修饰符]class

类名{type

variable1;…type

variableN;type

method1(parameter-list){//方法体}…type

methodN(parameter-list){//方法体}}成员变量(对象属性)成员方法(对象行为或操作)类名(自定义的标识符)4.2

类例:class

Car

{intcolor;int

speed;void

brake()

{

}void

speedUp()

{…};void

slowDown()

{

}}计算机中的对象的原型现实生活中的对象public

class

MyDate{int

year,month,day;void

setDate(int

y,int

m,int

d){year=y;

month=m;

day=d;}boolean

isLeapYear(){if(year%400==0||year%4==0&&year%100!=0)return

true;elsereturn

false;}public

voidshowDate(){System.out.println(year+"-"+month+"-"+day);}}4.2.2

成员变量和局部变量成员变量[修饰符]<数据类型><名称>[=<初值>];static(静态变量或类变量)final(

常量,不能改变其值)public、(default)、protected、private例如:static

int

speed=80;int

speed;作用域:整个类内有效4.2.2

成员变量和局部变量System.out.println(s);}}局部变量:方法或语句块内定义的变量,局部有效public

class

A{public

static

void

main(String

args[])

{int

a=1;if(a==1){String

s="Happy

new

year!";}4.2.2

成员变量和局部变量局部变量在其作用域内覆盖同名成员变量public

class

A{int

a=0;public

static

void

main(String

args[])

{int

a=1;if(a==1){System.out.println(“局部变量覆盖同名成员变量”);}}}说明:变量的类型可以是java中任意的数据类型成员变量作用范围:类内有效局部变量作用范围:方法内或语句块内有效成员变量可以使用修饰符局部变量不可以使用修饰符局部变量在其作用域内覆盖同名成员变量4.2.2

成员变量和局部变量4.2.3

成员方法[修饰符]

类型

方法名([参数列表]){//

法体}返回类型public

void

changeSpeed(int

newSpeed){speed=newSpeed;}1、成员方法的定义static(静态方法或类方法)(抽象方法)、final(最终方法)public、(default)、protected、privatesynchronized(同步方法)4.2.3

成员方法2、方法的调用调用本类的方法方法名(参数列表)调用静态方法类.方法名(参数列表)调用对象的方法对象.方法名(参数列表)注意:有返回值可以获取返回值4.2.3

成员方法3、方法调用时参数的传递基本数据类型参数:传值类型参数:传4、方法嵌套和递归调用方法中可以调用方法方法中调用自身就是递归4.2.3

成员方法5、方法重载参数类型不同参数个数不同注意:参数返回值类型不能区分重载方法4.2.4

构造方法与类名相同无返回值类型创建对象时自动调用,不显示调用classRect{doublew,h;publicRect(doublea,doubleb){w=a;h=b;}double

computeArea(){return

w*h;}}说明:一般构造方法的(default)权限设置为public或如果在一个类里没有定义构造方法,系统提供一个默认的无参数无语句的构造方法。一个类可以定义多个构造函数,调用时根据实参决定调用哪一个构造函数。4.2.4

构造方法对象的类名

对象名;例:Rect

r;对象的创建对象名=new

类名([参数]);//创建对象4.2.5

类的对象//

对象调用构造方法例:r

=

new Rect

(

1,2

)

;3.使用对象对象.属性;对象.方法();4.2.6

关键字this代表当前对象(可省略)class

Tom{int

leg;void

setLeg(){this.leg=4;}}class

Tom{int

leg;void

print()

{this.printLeg();}void

printLeg()

{System.out.println(3);}}4.2.6关键字this用this区分成员变量和局部变量(不可省略)class

Tom{intleg;Tom(int

leg){this.leg=leg;}}构造方法经常这样写4.2.6关键字this有重载的构造方法时,用来其他的构造方法(不可省略)class

Tom{intleg;Tom()

{this(4);}Tom(int

leg)

{this.leg=leg;}}补充:Java实体类编写规范使用构造方法进行初始化成员变量private:private

int

width;每一个成员变量都根据需要设置相应的public的get

()、set

()方法public

int

getWidth(){}public

void

setWidth(int

width){}可以加其他自定义类编写显示员工信息的程序。员工类:初始化员工ID和和

,输出员工ID和,修改员工ID。测试类:生成员工对象,设置员工信息,输出员工信息。练习4.3

修饰符修饰符(修饰类、成员方法和成员变量)控制符:private,protected,缺省,public,非

控制符:static,

final,,

native,

syncronized4.3

修饰符权限修饰符本类同一包中的类不同包中的子类不同包中的普通类private√缺省√√protected√√√public√√√√1.控制修饰符修饰成员变量和成员方法4.3

修饰符权限修饰符同一包中的类不同包中的类缺省√public√√1.控制修饰符修饰类4.3

修饰符2.

static类变量和实例变量有static修饰没有static修饰class

People{int

age;}static

boolean

ifBreath;对比项内存同类使用外类使用类变量占一块,加载时分配,实例共有直接用带类名直接使用,不必生成对象实例变量一个对象占一块实例方法直接用必先生成对象,然后再使用class

Lader{floatabove;//实例变量static

float

bottom;//类变量

void

setAbove(float

a){above=a;}void

setBottom(float

b){bottom=b;}float

getAbove(){return

above;}float

getBottom(){return

bottom;}}class

Example{public

static

void

main(String

args[]){Lader.bottom=60;System.out.println(Lader.bottom);Lader

laderOne,laderTwo;laderOne=new

Lader();laderTwo=new

Lader();System.out.println(laderOne.getBottom());System.out.println(laderTwo.getBottom());laderOne.setAbove(11);laderTwo.setAbove(22);laderTwo.setBottom(100);System.out.println(Lader.bottom);System

out

println(laderOne

getAbove());2.

static常量不占用对象的内存对象可以使用,不能更改常量往往使用static和final一块儿修饰4.3

修饰符有final修饰的变量例如:static

final

double

PI=3.14;问题:什么时候使用static修饰变量?实例共有的变量常量有static修饰2.

static类方法和实例方法没有static修饰class

People{voi

static

void

breath(){…}void

conBirthday(int

age){…}}对比项内存同类使用外类使用类方法占一块,加载时分配,实例共有直接用带类名直接使用,不必生成对象实例方法一个对象占一块实例方法直接用必先生成对象,然后再使用4.3

修饰符class

Computer{static

double

max(double

a,double

b){return

a>b?a:b;}}class

Example{public

static

voidmain(String

args[]){double

puter.max(12,45); //类名调用类方法。System.out.println(max);}}问题:main()需的吗?方法的static修饰符是必–

是:程序的类一加载就调用main()

方法,没有生成实例static总结类变量:公共实例变量:个人类方法:公家行为实例方法:个人行为41问题:this能用在类方法中吗?不能,如同类方法中不能使用实例变量一样4.3

修饰符3.

finalfinal修饰类,表示为“终极”、“最终”类,别的类不能继承此类。final修饰成员变量,表示该成员变量是一个常量,不能被修改。final修饰成员方法,表示该成员方法不能被重写。final与public联用,表示只能被 ,不能被继承或重写如,java.lang.System类即被修饰为final类4.4

静态初始化静态初始化:一种在类加载时,做一些起始动作的语句或程序块。static{//程序块}①一个类中可以有多个静态初始化②静态初始化不能使用实例变量和实例方法③静态初始化不能使用this和super关键字public

class

StaticInitDemo{static

int

x=100;static

doubley;double

z;static{y=3.1415926;}StaticInitDemo(){z=y*x*x;}public

static

void

main(String

args[]){System.out.println("x="+x);System.out.println("y="+y);StaticInitDemo

s1=new

StaticInitDemo();System.out.println("z="+s1.z);}}4.5类定义在

(类、方法、表达式)的类叫

类。类编译成独立的.class文件,但前面冠以外部类的类名和$符号。类有四种形式:成员

静态

类局部

类类好处:控制的特点,并且能①具有命名控制和使用外部类的成员。②完成功能、隐藏具体实现细节。③

类和接口共同使用实现复杂多继承。④

类在事件处理时,使代码简洁。⑤接口或类的方法

时,可以考虑使用内部类。4.5.1

成员类成员类:不用static修饰的

类,类似于实例方法,可

外部类的所有成员变量和成员方法。生成

类对象:外部类实例方法中可以直接生成

类对象类名

对象=new

类名();外部类静态方法中:外部类名.().new类名 类对象=new

外部类名类名();class

MyOuterClass{class

MyInnerClass{public

void

seeOuter(){System.out.println("}}public

voiduseInnerClass{类);MyInnerClass inner

=

new

MyInnerClass();}}public

class

MyOuterClassTest{public

static

void

main(String

args[]){//

MyOuterClass outer

=

new

MyOuterClass();//

MyInnerClass inner

=

outer.

new

MyInnerClass();MyOuterClass.MyInnerClass inner

=

newMyOuterClass()

.

new

MyInnerClass();inner.seeOuter();}}4.5.1

成员类在

类中:this——当前

类对象外部类类名.this

——当前外部类对象class

MyOuterClass{int

a

=

3;class

MyInnerClass{int

a

=

5;public

void

seeOuter(){System.out.println("类成员a值"+this.a);System.out.println("外部类成员a的"+MyOuterClass.this.a);}}}4.5.2

静态

类静态

类:用s

温馨提示

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

评论

0/150

提交评论