当前位置:文档之家› Java基础教程(第3章)

Java基础教程(第3章)

public class Circle{ private int r; public static double PI=3.14; ……
}
实例变量和类变量的区别
不同对象的实例变量将被分配不同的内存空间, 而类变量,对所有对象的这个类变量都分配给相 同的内存空间,改变其中一个对象的这个类变量 会影响其它对象读取的值,即同类对象共享类变 量。
cc11..rr==55;;
SSyysstteemm..oouutt..pprriinnttllnn((cc11..ggeettAArreeaa(())));;
}}
}}
public class Circle{ public int r;
当局部变量和成员变量同名时, 成员变量被隐藏,
public double getArea ( int r ) { double area=3.14*r*r;
如何引用被隐藏的成员变量呢?
return area; }
this.变量名 —— 成员变量
public static void main(String args[ ] ) { this ——表示当前对象的应用
Circle c1=new Circle( );
如:this.成员变量
System.out.println( c1.getArea(5) ); this.成员方法
当程序执行时,类代码被加载时,就会给类变量分 配空间,而实例变量要在创建实例后才分配空间
类变量通过类名可直接引用,实例变量要通过创 建实例后的实例名来引用,不能通过类名直接引 用
Circle cl1=new Circle(3); System. out .println( cl1 .r );
方法体中声明的局部变量的作用域在该方法内 部。
方法声明部分有static则此方法为类方法(静态 方法),无static的为实例方法
实例方法和类方法的区别
当类加载到内存时,实例方法不会被分配入口地 址,当创建对象后,类中的实例方法才分配入口 地址。所以其只能通过对象名引用,且方法定义 中,既可以使用实例变量也可以使用类变量。
public static void main(String args[]) {
MethodOverloading mo = new MethodOverloading();
mo.receive(1);
mo.receiv递
对于简单数据类型来说,Java 实现的是 值传递,对于复合数据类型(引用型)在 值传递中传递的是引用地址,方法中对引 用地址所指向的数据的操作可以改变数据 的值。
Java程序设计基础教程
第三章 类和对象
第3章 类和对象
面向对象技术基础 类的概念、定义与使用 对象的生成、使用、清除 static关键字 this关键字 final关键字 Java类中的限定词 包和import语句
3.1面向对象技术基础
3.1.1面向对象的基本概念 面向对象是一种新兴的程序设计方法。其
客观世界是由对象和对象之间的联系组成 主动对象是一组属性和一组服务的封装体,
其中至少有一个服务不需要接收消息就能 主动执行(称作主动服务)。
2.类的基本概念
把众多的事物归纳、分类是人类在认识客 观世界时经常采用的思维方法。
类是具有相同属性和服务的一组对象的集 合,它为属于该类的所有对象提供了统一 的抽象描述,其内部包括属性和服务两个 主要部分。
3.1.3 面向对象程序设计方法
面向对象程序设计方法可分为 面向对象的分析(OOA,Object Oriented Analysis) 面向对象的设计(OOD,Object Oriented Design) 面向对象的实现(OOI,Object Oriented Implementation)
生命周期不同 使用范围不同
dreotuubrnleaarreeaa;=3.14*r*r; } return area; p}ublic int r;
对外部的可见性不同 ppuubblilcicsstatatitcicvvooididmmaainin( (S) t{ring a[]) {
CCiirrccllee cc11==nneeww CCiirrccllee((););
类与对象的关系就如模具和铸件的关系, 类的实例化结果就是对象,而对一类对象 的抽象就是类。
3.消息
消息就是向对象发出的服务请求 消息包含下述信息:提供服务的对象标识、
服务标识、输入信息和回答信息。 服务通常被称为方法或函数。
3.1.2面向对象的基本特征
1.封装性:就是把对象的属性和服务结合成一个 独立的单位,并尽可能隐蔽对象的内部细节
类成员变量 实例成员变量
3.2.5 成员方法
方法的定义包方括法首两名字部应母该分应是小内动写容词, 一般格式为:
方法声明
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList])
思考题: 什么时候把变量定义为局部变量? 什么时候定义为成员变量?
public static void main(String args[ ]) {
Circle c1=new Circle(); c1.setR(5);
System.out.println( c1.getArea( ) ); }
}
成员变量的声明方式如下:
含义:
把对象的全部属性和全部服务结合成一个独立单位。 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成
一个边界,只保留有限的对外接口与外部发生联系。
好处:有效的避免了外部错误对它的“交叉感 染”,使软件错误能够局部化,大大减少查错 和排错的难度。
2.继承性
特殊类的对象拥有某个一般类的部分属性与服 务,称作特殊类对一般类的继承。 Java只支
方法体内或参数列表中 定义——局部变量
public static void main( String args[ ]) {
Circle c1=new Circle( );
c1.r =5;
System.out.println( c1.getArea( ) );
}
}
两者的相同之处
类型上:可以是任意一种数据类型
3.2.6 方法重载
方法重载是指在一个类中以同一个名字定义多个 方法,每个方法的参数必须不同,或者是参数的 个数不同,或者是参数类型不同。
方注意法1的:名方法字返与回所值属的类类型型以及参数的顺序构成了方 法不能签用名来(区s分ig重n载at的ur方e)法 ,在类中每个方法的签名 必须是不完全一样的,这样才能使编译器准确地
{
继承于父类
实现的接口列表
……
}
给类命名时,最好遵守下列习惯。
1)类名应该是名词,大小写可混用,但首字 母应大写 ,如Time、People等。
2)类名最好见名识义
类体
Java中类体定义的语法如下: class className{
成员变量的定义
type mumberVariable;
returnType mumbermethod ([paramList]){
statements
}
}
成员方法的定义
3.2.4 成员变量和局部变量
public class Circle{
类体中方法体之外定
public int r;
义——成员变量
public double getArea( ) {
double area=3.14 * r * r; return area; }
命名上:都要符合标示符命名规范
两者的不同之处
初始化方式不同
ppuubblliicc ccllaassss CCiirrccllee{{ ppuubblliicc idnot ur;ble getArea( ) { pubdloicubdloeuabrleeag=e3t.A14re*ra*(r); {
注意2:参数类型的区分度一定要足够,例如
判不能断是你同调一用简的单是类型哪的个参方数法,。如int与long。
class MethodOverloading { void receive(int i) {
P65 例3-3】
System.out.println("Receive one int data");
一个类若是多个一般类的特殊类,则它持单能继从承多 个一般类中继承属性与服务,称为多继承。
在Java 语言中,称一般类为父类(superclass, 超类),特殊类为子类(subclass)。
3.多态性 对象的多态性是指在父类中定义的属性或
服务被子类继承之后,可以具有不同的数 据类型或表现出不同的行为。 这使得同一个属性或服务在父类及其各个 子类中具有不同的语义。
基本思想是使用对象、类、继承、封装、 消息等基本概念来进行程序设计。 从现实世界中客观存在的事物(即对象) 出发来构造软件系统,并且在系统构造中 尽可能运用人类的自然思维方式。
1.对象的基本概念
对象是系统中用来描述客观事物的一个实 体,它是构成系统的一个基本单位。一个 对象由一组属性和对这组属性进行操作的 一组服务组成。
类方法在类加载到内存时,就分配了相应的入口 地M址at。h.m所a以x(其10既,7)可;//以通通过过类类名名直直接接调调用用,也可以 通St过rin对g s象=名ne调w用Str。in在g(在“方He法llo定”义);中,只能使用类 变In量t le,n=不s能.le使ng用th实();例//通变过量实。例名调用
相关主题