IBM java培训内部资料(面向对象设计思想)(共64张).pptx
《IBM java培训内部资料(面向对象设计思想)(共64张).pptx》由会员分享,可在线阅读,更多相关《IBM java培训内部资料(面向对象设计思想)(共64张).pptx(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、IBM HZ-ETP 2009 IBM Corporation面向对象设计思想为什么要使用面向对象彭鹏IBM Learning & Knowledge2022-2-27IBM HZ-ETP 2009 IBM CorporationAgenda函数函数类类对象对象构造函数构造函数2022-2-272Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数(子程序)的概念与作用。函数(子程序)的概念与作用。定义一个函数的格式定义一个函数的格式 编写打印三个矩形的程序(用流水帐的方式与用函数的方式进行对比分析)。编写打印三个矩形的程序(用流水帐的
2、方式与用函数的方式进行对比分析)。返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.) 程序代码 return 返回值;返回值;其中:形式参数:形式参数:在方法被调用时用于接收外部传入的数据的变量。参数类型参数类型:就是该形式参数的数据类型。返回值:返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:返回值类型:函数要返回的结果的数据类型。实参:实参:调用函数时实际传给函数形式参数的数据。如何理解函数返回值类型为如何理解函数返回值类型为void的情况的情况 函数(方法)2022-2-273Template DocumentationIBM HZ-ETP 2009 IB
3、M Corporation函数调用的格式函数调用的格式在函数中使用在函数中使用return提前返回提前返回函数调用的过程分析函数调用的过程分析函数的调用2022-2-274Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。个数或类型不同即可。 如:如:public class Testpublic static void main(String args)int isum;do
4、uble fsum;isum=add(3,5);isum=add(3,5,6);fsum=add(3.2,6.5); public static int add(int x,int y) reutrn x+y;public static int add(int x,int y,int z)return x+y+z;public static double add(double x,double y) return x+y;函数的重载2022-2-275Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 1编写一个类编写一个
5、类ETPTest2_1,使他具有一个方法为:,使他具有一个方法为:public int getArea(int i, int j)并返回并返回i * j的值。的值。再从外部调用这个方法再从外部调用这个方法传入相应,并打印出结果值传入相应,并打印出结果值2022-2-276Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 2求下面代码输出结果求下面代码输出结果public class ETPTest2_2 private void change(int x) x = 3;System.out.println(x);publ
6、ic static void main(String args) int x = 5;ETPTest2_2 test2_2 = new ETPTest2_2();test2_2.change(x);System.out.println(x);2022-2-277Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 3求下面代码输入结果求下面代码输入结果public class Main public void change(Obj obj) obj.x = 3;public static void main(String a
7、rgs) Main main = new Main(); Obj obj = new Obj(); System.out.println(obj.x); main.change(obj); System.out.println(obj.x);class Obj int x = 5;2022-2-278Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 4private float getVar()return x; 以下哪些可以重载上面这条语句以下哪些可以重载上面这条语句A.float getVar() B.public
8、float getVar()C.public double getVar() D.protected float getVar() E.public float getVar(float f)2022-2-279Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的参数传递基本数据类型的参数传递 2022-2-2710Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的参数传递引用数据类型的参数传递2022-2-2711Template DocumentationIBM HZ-
9、ETP 2009 IBM Corporationstatic静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所
10、有的中国人都有个国家名称,每一个中国人都共享这个只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。家名称的变量。编写使用静态变量统计一个类产生的实例对象的个数的程序编写使用静态变量统计一个类产生的实例对象的个数的程序2022-2-2712Template DocumentationIBM HZ-ETP 2009 IBM Corporationstatic静态方法在静态方法里只能直接调用同类中其它的静态成员(包括变量和方在静态方法里只能直接调
11、用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。用前不用创建任何对象。 静态方法不能以任何方式引用静态方法不能以任何方式引用this和和super关键字。与上面的道理一关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,用时,this所引用的对象根本就没
12、有产生。所引用的对象根本就没有产生。 main() 方法是静态的,因此方法是静态的,因此JVM在执行在执行main方法时不创建方法时不创建main方法方法所在的类的实例对象,因而在所在的类的实例对象,因而在main()方法中,我们不能直接访问该类方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次碰到。碰到。2022-2-2713Template DocumentationIBM
13、HZ-ETP 2009 IBM Corporation静态代码块 一个类中可以使用不包含在任何方法体中的静态代码块一个类中可以使用不包含在任何方法体中的静态代码块(static block ),当类被载入时,静态代码块被执行,且,当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。只被执行一次,静态块经常用来进行类属性的初始化。 类中的静态代码块被自动执行,尽管我们产生了类的多类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的
14、时一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。能要用到的类。 2022-2-2714Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 5下面这个类声明了静态变量,并且使用了下面这个类声明了静态变量,并且使用了静态代码块初始化变量静态代码块初始化变量public class StaticClass private static int i;static i = 3;public static void main
15、(String args) System.out.print(StaticClass.i);请创建一个类请创建一个类, 使用静态代码块初始化并打印出来看是否生效使用静态代码块初始化并打印出来看是否生效2022-2-2715Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节对象和类对象和类2022-2-2716Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明类说明语法:类说明语法: 类修饰符 class 类名 extends 超类名 implements 接
16、口名 成员变量定义;方法定义;类体2022-2-2717Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明(续)类修饰符(类修饰符(Modifier):): public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类 abstract:没有实例的抽象概念类 final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类 缺省:可被当前包中的其他类访问父类继承声明:父类继承声明:extends 父类名父类名实现接口实现接口(interface):implements 接口名接口名
17、2022-2-2718Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明(续)例:例:public abstract class shapeclass rectangle extends shapefinal class roundrect extends rectangle.? final可以与可以与abstract一起使用吗?一起使用吗?2022-2-2719Template DocumentationIBM HZ-ETP 2009 IBM Corporation类的成员变量的声明声明成员变量声明成员变量member
18、的语法的语法修饰符 数据类型 变量名;引用:对象名引用:对象名.变量变量修饰符修饰符访问控制符 public:可被所有其他类引用 private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用 2022-2-2720Template DocumentationIBM HZ-ETP 2009 IBM Corporation成员变量的声明(续) protected:该类自身、子类、同一包中的其他类 缺省:本包中的类static:类成员变量,对所有的实例一致,引用是前缀可使用类名或对象名final:数值不变常量,定义同时应对其进行初始化2022-2-2721Template Docume
19、ntationIBM HZ-ETP 2009 IBM Corporation成员变量的声明(续)例:例: class shapeprivate int x;private int y;static final float MaxArea=100.0f;. 2022-2-2722Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明定义对类内成员变量(数据)的操作定义对类内成员变量(数据)的操作方法的声明语法:方法的声明语法:修饰符 返回类型 方法名(参数列表) throws 例外名 方法体;谁可以调用方法、接受哪些参数、如何返回信息
20、谁可以调用方法、接受哪些参数、如何返回信息2022-2-2723Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)修饰符修饰符(Modifier):): 访问控制符:public、private、protected static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法 abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现 final:不能被重新定义(override)2022-2-2724Template Docum
21、entationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)返回类型:返回类型:void、return参数列表:值传递参数列表:值传递throws: 通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。2022-2-2725Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)例:例: class shapeprivate int x;static float MaxArea=100.0f; public
22、 void setx(int newx)x=newx;public static void setMA(float newMA)MaxArea=newMA;public final getx( )return x 2022-2-2726Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节对象对象2022-2-2727Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的产生Person p1 = new Person();执行完后的内存状态执行完后的内存状态2022-2-27
23、28Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的产生当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的都是变量类型都是引用类型,如上赋值。除了基本数据类型之外的都是变量类型都是引用类型,如上面的面的Person及前面讲过的数组。及前面讲过的数组。 2022-2-2729Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的使用创建新的对象之后创建新的对象之后,我们就可以使用
24、我们就可以使用“ 对象名对象名.对象成员对象成员 ”的格式,来访的格式,来访问对象的成员(包括属性和方法)问对象的成员(包括属性和方法) class TestPersonpublic static void main(String args) Person p1 = new Person();Person p2 =new Person();p1.age = -30;p1.shout();p2.shout();程序运行的内存布局如下图程序运行的内存布局如下图 2022-2-2730Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的生命
25、周期 与基本类型的与基本类型的生命周期一样生命周期一样2022-2-2731Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的比较 “=”运算符与运算符与equals()方法的区别方法的区别怎样比较两个数组对象的内容是否相等怎样比较两个数组对象的内容是否相等 2022-2-2732Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 6比较两个数组是否相等比较两个数组是否相等 1. 声明两个数组,并使他们各个元素相同 2. 调用Arrays.equals(a1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBMjava培训内部资料(面向对象设计思想)(共64张)
限制150内