IBM培训--面向对象设计原理

上传人:876****10 文档编号:150382123 上传时间:2020-11-05 格式:PPT 页数:63 大小:1.33MB
返回 下载 相关 举报
IBM培训--面向对象设计原理_第1页
第1页 / 共63页
IBM培训--面向对象设计原理_第2页
第2页 / 共63页
IBM培训--面向对象设计原理_第3页
第3页 / 共63页
IBM培训--面向对象设计原理_第4页
第4页 / 共63页
IBM培训--面向对象设计原理_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《IBM培训--面向对象设计原理》由会员分享,可在线阅读,更多相关《IBM培训--面向对象设计原理(63页珍藏版)》请在金锄头文库上搜索。

1、2020/11/5,面向对象设计思想为什么要使用面向对象,彭鹏 IBM Learning double 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; ,函数的重载,6,Template Documentation,2

2、020/11/5,Practice 1,编写一个类ETPTest2_1,使他具有一个方法为: public int getArea(int i, int j) 并返回i * j的值。 再从外部调用这个方法 传入相应,并打印出结果值,7,Template Documentation,2020/11/5,Practice 2,求下面代码输出结果 public class ETPTest2_2 private void change(int x) x = 3; System.out.println(x); public static void main(String args) int x = 5;

3、 ETPTest2_2 test2_2 = new ETPTest2_2(); test2_2.change(x); System.out.println(x); ,8,Template Documentation,2020/11/5,Practice 3,求下面代码输入结果 public class Main public void change(Obj obj) obj.x = 3; public static void main(String args) Main main = new Main(); Obj obj = new Obj(); System.out.println(obj

4、.x); main.change(obj); System.out.println(obj.x); class Obj int x = 5; ,9,Template Documentation,2020/11/5,Practice 4,private float getVar()return x; 以下哪些可以重载上面这条语句 A.float getVar() B.public float getVar() C.public double getVar() D.protected float getVar() E.public float getVar(float f),10,Template

5、 Documentation,2020/11/5,函数的参数传递基本数据类型的参数传递,11,Template Documentation,2020/11/5,函数的参数传递引用数据类型的参数传递,12,Template Documentation,2020/11/5,static静态变量,当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个

6、中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。 编写使用静态变量统计一个类产生的实例对象的个数的程序,13,Template Documentation,2020/11/5,static静态方法,在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。 静态方法不能以任何方式引用this和super关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象

7、根本就没有产生。 main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次碰到。,14,Template Documentation,2020/11/5,静态代码块,一个类中可以使用不包含在任何方法体中的静态代码块(static block ),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。 类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其

8、中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。,15,Template Documentation,2020/11/5,Practice 5,下面这个类声明了静态变量,并且使用了静态代码块初始化变量 public class StaticClass private static int i; static i = 3; public static void main(String args) System.out.print(StaticClass.i); 请创建一个类, 使用静态代码块初始化并打印

9、出来看是否生效,16,Template Documentation,2020/11/5,下一章节,对象和类,17,Template Documentation,2020/11/5,JAVA中类的声明,类说明语法: 类修饰符 class 类名 extends 超类名 implements 接口名 成员变量定义; 方法定义; ,类体,18,Template Documentation,2020/11/5,JAVA中类的声明(续),类修饰符(Modifier): public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类 abstract:没有实例的抽象概念类 final:不

10、能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类 缺省:可被当前包中的其他类访问 父类继承声明:extends 父类名 实现接口(interface):implements 接口名,19,Template Documentation,2020/11/5,JAVA中类的声明(续),例: public abstract class shape class rectangle extends shape final class roundrect extends rectangle. ? final可以与abstract一起使用吗?,20,Template Documentati

11、on,2020/11/5,类的成员变量的声明,声明成员变量member的语法 修饰符 数据类型 变量名; 引用:对象名.变量 修饰符 访问控制符 public:可被所有其他类引用 private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用,21,Template Documentation,2020/11/5,成员变量的声明(续),protected:该类自身、子类、同一包中的其他类 缺省:本包中的类 static:类成员变量,对所有的实例一致,引用是前缀可使用类名或对象名 final:数值不变常量,定义同时应对其进行初始化,22,Template Documentation,

12、2020/11/5,成员变量的声明(续),例: class shape private int x; private int y; static final float MaxArea=100.0f; . ,23,Template Documentation,2020/11/5,方法的声明,定义对类内成员变量(数据)的操作 方法的声明语法: 修饰符 返回类型 方法名(参数列表) throws 例外名 方法体; 谁可以调用方法、接受哪些参数、如何返回信息,24,Template Documentation,2020/11/5,方法的声明(续),修饰符(Modifier): 访问控制符: publ

13、ic、private、protected static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法 abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现 final:不能被重新定义(override),25,Template Documentation,2020/11/5,方法的声明(续),返回类型:void、return 参数列表:值传递 throws: 通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程

14、序段。,26,Template Documentation,2020/11/5,方法的声明(续),例: class shape private int x; static float MaxArea=100.0f; public void setx(int newx)x=newx; public static void setMA(float newMA)MaxArea=newMA; public final getx( )return x ,27,Template Documentation,2020/11/5,下一章节,对象,28,Template Documentation,2020/1

15、1/5,对象的产生,Person p1 = new Person();执行完后的内存状态,29,Template Documentation,2020/11/5,对象的产生,当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的都是变量类型都是引用类型,如上面的Person及前面讲过的数组。,30,Template Documentation,2020/11/5,对象的使用,创建新的对象之后,我们就可以使用“ 对象名.对象成员 ”的格式,来访问对象的成员(包括属性和方法) class TestPerson public static void main(Str

16、ing args) Person p1 = new Person(); Person p2 =new Person(); p1.age = -30; p1.shout(); p2.shout(); 程序运行的内存布局如下图,31,Template Documentation,2020/11/5,对象的生命周期,与基本类型的 生命周期一样,32,Template Documentation,2020/11/5,对象的比较,“=”运算符与equals()方法的区别 怎样比较两个数组对象的内容是否相等,33,Template Documentation,2020/11/5,Practice 6,比较两个数组是否相等 1. 声明两个数组,并使他们各个元素相同 2. 调用Arrays.equals(a1, a2)方法 3. 打印出结果值,34,Template Documentation,2020/11/5,实现类的封装性,如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就象一个人的身高,不能被外部随意修改,只能通过各种摄取营养的方法去修

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 宣传企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号