尚硅谷佟刚Java面向对象ppt课件_第1页
尚硅谷佟刚Java面向对象ppt课件_第2页
尚硅谷佟刚Java面向对象ppt课件_第3页
尚硅谷佟刚Java面向对象ppt课件_第4页
尚硅谷佟刚Java面向对象ppt课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、学习目的 类和对象 信息的封装和隐藏 构造方法 方法的重载 this 关键字 函数的参数传送 package语句/import语句学习目的类和对象类和对象了解面向对象的概念了解面向对象的概念类的定义类的定义声明类、属性、方法声明类、属性、方法创建、运用对象创建、运用对象对象的生命周期对象的生命周期匿名对象匿名对象信息的封装和隐藏信息的封装和隐藏构造方法构造方法方法的重载方法的重载this this 关键字关键字函数的参数传送函数的参数传送packagepackage语句语句/import/import语句语句了解面向对象的概念 面向过程 在一个构造体中定义窗口的大小,位置,颜色,背景等属性,对

2、窗口操作的函数与窗口本身的定义没有任何关系,如HideWindow,MoveWindow,MinimizeWindow,这些函数都需求接受一个代表要被操作的窗口参数 ,是一种谓语与宾语的关系 。 面向对象 定义窗口时,除了要指定在面向过程中规定的那些属性,如大小,位置,颜色,背景等外,还要指定该窗口能够具有的动作 ,如隐藏,挪动,最小化等。这些函数被调用时,都是以某个窗口要隐藏,某个窗口要挪动的语法格式来运用的 ,这是一种主语与谓语的关系。 面向对象的三大特征 封装 (Encapsulation) 承继 (Inheritance) 多态 (Polymorphism) 面向对象的思想概述面向对象

3、的思想概述v面向对象的编程思想力图使计算机言语中对事物的描画与现实世界中该事物的本来面目尽能够的一致。 v类(class)和对象(object)是面向对象方法的中心概念。类是对一类事物描画,是笼统的、概念上的定义;对象是实践存在的该类事物的每个个体,因此也称实例(instance)。假设将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。 面向对象的思想概述面向对象的思想概述Java类数据1数据n方法1方法n属性方法Animallegeatmove数据(属性)方法类xh:Animalleg=0eatmovexb:Animalleg=4eatmove

4、new Animal()new Animal()类和对象举例类和对象举例 / /定义一个类定义一个类public class Animal public class Animal public int legs;public int legs; public void eat()public void eat() System.out.println(“Eating. System.out.println(“Eating.); ); public void move()public void move() System.out.println(“Moving. System.out.print

5、ln(“Moving.); ); / /声明并创建一个声明并创建一个AnimalAnimal类的对象,将该对象命名为类的对象,将该对象命名为xbxb Animal xb = new Animal();Animal xb = new Animal(); / /调用对象调用对象xbxb中的方法中的方法 xb.eat();xb.eat();Animal+leg:int+eat():void+move():void类的定义public class Animal public class Animal public int legs; public int legs; public void eat()

6、 public void eat() System.out.println(“Eating. System.out.println(“Eating.); ); public void move() public void move() System.out.println(“Moving. System.out.println(“Moving.); ); legslegs是类的属性是类的属性 ,也叫类,也叫类 成员成员 变量变量 。eat,moveeat,move是方法也叫类的是方法也叫类的 成员成员 函数。函数。声明类声明类语法格式: class 阐明:修饰符public:类可以被恣意访问类

7、的正文要用 括起来举例:public class Person private int age ; /声明私有变量 age public void showAge(int i) /声明方法showAge age = i; 声明属性声明属性语法格式: 类型 =初值 ; 阐明:修饰符 private: 该属性只能由该类的方法访问。修饰符 public: 该属性可以被该类以外的方法访问。类型:任何根本类型,如int、boolean或任何类。举例:public class Person private int age; /声明private变量 age public String name = “Li

8、la; /声明public变量 name属性有时也称为:数据成员(数据),成员变量(变量)声明方法声明方法语法格式:语法格式: () ) 阐明:阐明: 修饰符:修饰符:public,private,protected public,private,protected 等。等。前往类型:前往类型:returnreturn语句传送前往值。没有前往值:语句传送前往值。没有前往值:voidvoid。举例:举例:public class Personpublic class Person private int age; private int age; public int getAge() retu

9、rn age; / public int getAge() return age; /声明方法声明方法getAgegetAge public void setAge(int i) / public void setAge(int i) /声明方法声明方法setAgesetAge age = i; / age = i; /将参数将参数i i的值赋给类的成员变量的值赋给类的成员变量ageage 方法有时也称为:成员函数方法有时也称为:成员函数( (函数函数) )对象的创建和运用对象的创建和运用 运用 new +构造方法 创建一个新的对象; 运用 “对象名.对象成员 的方式访问对象成员包括属性和方法

10、;public class Animal public int legs; public void eat() System.out.println(“Eating.); public viod move() System.out.println(“Move.); 举例举例: : public class Zoopublic class Zoo public static void main(String args) public static void main(String args)Animal xb=new Animal();Animal xb=new Animal();xb.legs

11、=4;xb.legs=4;System.out.println(xb.legs);System.out.println(xb.legs);xb.eat();xb.eat();xb.move();xb.move(); 对象的创建和运用对象的创建和运用 假设创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。举例举例: : public class Zoopublic class Zoo public static void main(String args) public static void main(String args)Animal xb=new An

12、imal();Animal xb=new Animal();Animal xh=new Animal();Animal xh=new Animal();xb.legs=4;xb.legs=4;xh.legs=0;xh.legs=0;System.out.println(xb.legs); /4System.out.println(xb.legs); /4System.out.println(xh.legs); /0System.out.println(xh.legs); /0 xb.legs=2;xb.legs=2;System.out.println(xb.legs); /2System.o

13、ut.println(xb.legs); /2System.out.println(xh.legs); /0System.out.println(xh.legs); /0 提示提示v 类的访问机制:v 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。有一个例外v 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。对象的产生对象的产生class Personint age;void shout()System.out.println(“oh,my god! I am “ + age);Person p1 = new Person();执行完后的内存形状对象的产生

14、对象的产生 当一个对象被创建时,会对其中各种类型的成员变量自动进展初始化赋值。除了根本数据类型之外的都是变量类型都是援用类型,如上面的Person及前面讲过的数组。 对象的运用对象的运用创建新的对象之后,我们就可以运用“ 对象名.对象成员 的格式,来访问对象的员 class TestPersonpublic static void main(String args) /上面程序运转的内存规划如以下图 Person p1 = new Person();Person p2 =new Person();p1.age = -30;p1.shout();p2.shout();对象的生命周期 匿名对象 我

15、们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象, 如:new Person().shout(); 假设对一个对象只需求进展一次方法调用,那么就可以运用匿名对象。 我们经常将匿名对象作为实参传送给一个函数调用。 练习练习1 11.创建一个Person类,其定义如下:Person+name:String+age:int+sex:int+study():void+showAge():void+addAge(int i):void要求:(1)创建Person类的对象,设置该对象的name、age和sex属性,调用study方法,输出字符串“studying,调用showAg

16、e()方法显示age值,调用addAge()方法给对象的age属性值添加2岁。(2)创建第二个对象,执行上述操作,领会同一个类的不同对象之间的关系。2. 利用面向对象的编程方法,设计类Circle计算圆的面积。学习目的 类和对象 信息的封装和隐藏 信息封装和隐藏的必要性 private 关键字 构造方法 方法的重载 this 关键字 函数的参数传送 package语句/import语句信息的封装和隐藏信息的封装和隐藏(1)(1) 运用者对类内部定义的属性运用者对类内部定义的属性( (对象的成员变量对象的成员变量) )的直接操作会导致数据的直接操作会导致数据的错误、混乱或平安性问题。的错误、混乱

17、或平安性问题。(version1)(version1)public class Animal public class Animal public int legs; public int legs; public void eat() public void eat()System.out.println(“Eating.System.out.println(“Eating.); ); public void move() public void move()System.out.println(“Moving.System.out.println(“Moving.); ); public

18、class Zoopublic class Zoo public static void main(String args) public static void main(String args) Animal xb=new Animal(); xb.legs=4; Animal xb=new Animal(); xb.legs=4; System.out.println(xb.legs); System.out.println(xb.legs); xb.eat();xb.move(); xb.eat();xb.move(); 问题:问题:xb.legs=-1000;xb.legs=-100

19、0;应该将应该将legslegs属性维护起来,属性维护起来,防止乱用。防止乱用。维护的方式:信息隐藏维护的方式:信息隐藏信息的封装和隐藏信息的封装和隐藏(2)(2) Java中经过将数据声明为私有的(private),再提供公开的public方法:getXXX和setXXX实现对该属性的操作,以实现下述目的:隐藏一个类的实现细节;运用者只能经过事先定制好的方法来访问数据,可以方便地参与控制逻辑,限制对属性的不合理操作;便于修正,加强代码的可维护性;信息的封装和隐藏信息的封装和隐藏(3) (version2)(3) (version2)public class Animalpublic clas

20、s Animalprivate int legs;private int legs; / /将属性将属性legslegs定义为定义为privateprivate,只能被,只能被AnimalAnimal类内部访问类内部访问public void setLegs(int i) /public void setLegs(int i) /在这里定义方法在这里定义方法 eat() eat() 和和 move() move() if (i != 0 & i != 2 & i != 4)if (i != 0 & i != 2 & i != 4) System.out.prin

21、tln(Wrong number of legs!); System.out.println(Wrong number of legs!); return; return; legs=i;legs=i; public int getLegs()public int getLegs()return legs;return legs; public class Zoopublic class Zoopublic static void main(String args)public static void main(String args)Animal xb=new Animal();Animal

22、 xb=new Animal();xb.setLegs(4);xb.setLegs(4); /xb.setLegs(-1000); /xb.setLegs(-1000); xb.legs=-1000; xb.legs=-1000; / /非法非法System.out.println(xb.getLegs();System.out.println(xb.getLegs(); 1.创建程序,在其中定义两个类,Person和 TestPerson类的定义如下。用setAge()设置人的合法年龄(0130),用getAge()前往人的年龄。在Test类中实例化Person类的对象b,调用setAge(

23、)和getAge()方法,领会Java的封装性。练习练习2 2Person-age:int+setAge(i: int)+getAge(): int学习目的 类和对象 信息的封装和隐藏 构造方法 构造器的定义、作用 分析对象创建过程内存形状的变化 方法的重载 this 关键字 函数的参数传送 package语句/import语句构造器的定义与作用 构造方法的特征 它具有与类一样的称号; 它不含前往值; 留意:在构造方法里不含前往值的概念是不同于“void的,在定义构造方法时加了“void,结果这个方法就不再被自动调了。 构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用

24、,我们可以在这个方法中参与要完成初始化任务的代码。这就好似我们规定每个“人一出生就必需先洗澡,我们就可以在“人的构造方法中参与完成“洗澡的程序代码,于是每个“人一出生就会自动完成“洗澡,程序就不用再在每个人刚出生时一个一个地通知他们要“洗澡了。 构造器构造方法构造器构造方法功能:创建类的实例时,初始化实例的一组指令。功能:创建类的实例时,初始化实例的一组指令。语法格式:语法格式: () ) 举例:举例:public class Animal public class Animal private int legs;private int legs;public Animal() legs =

25、4; public Animal() legs = 4; / /构造器构造器public void setLegs(int i) legs = i; public void setLegs(int i) legs = i; public int getLegs()return legs;public int getLegs()return legs; 创建创建AnimalAnimal类的实例:类的实例:Animal a=new Animal(); /Animal a=new Animal(); /调用构造器,将调用构造器,将legslegs初始化为初始化为4 4注释:构造器的称号必需与类名一样

26、。修饰符:注释:构造器的称号必需与类名一样。修饰符:publicpublic、privateprivate、protectedprotected 构造器不是方法,没有前往值连构造器不是方法,没有前往值连voidvoid也不能写也不能写默许的构造方法默许的构造方法Java言语中,每个类都至少有一个构造方法;假设类的定义者没有显式的定义任何构造方法,系统将自动提供一个默许的构造方法:默许构造方法没有参数默许构造方法没有方法体默许的构造方法:Animal() 所以:不编写构造方法就能用new Xxx()创建类的实例。Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不再提供默许的构造方

27、法;构造器的主要作用:利用构造器参数初始化对象的属性。练习练习3 3 1. 在前面定义的Person类中添加构造方法,利用构造方法设置一切人的age属性初始值都为18。 2. 修正上题中类和构造方法,添加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。Person-age:int+setAge(i: int)+getAge(): intPerson p = new Person(“TomPerson p = new Person(“Tom,18) ,18) 的内存形状变化过程分析的内存形状变化过程分析学习目的 类和对象 信息的封装和隐藏 构造方法 方法

28、的重载 方法函数 方法的重载 构造方法的重载 this 关键字 函数的参数传送 package语句/import语句函数函数 前往值类型 函数名参数类型 方式参数1,参数类型 方式参数2,. 程序代码 return 前往值;其中:方式参数:在方法被调用时用于接纳外部传入的数据的变量。参数类型:就是该方式参数的数据类型。前往值:方法在执行终了后返还给调用它的程序的数据。前往值类型:函数要前往的结果的数据类型。实参:调用函数时实践传给函数方式参数的数据。参数类型:就是该方式参数的数据类型。参数类型:就是该方式参数的数据类型。前往值:方法在执行终了后返还给调用它的程序的数据。前往值:方法在执行终了后

29、返还给调用它的程序的数据。前往值类型:函数要前往的结果的数据类型。前往值类型:函数要前往的结果的数据类型。方式参数:在方法被调用时用于接纳方式参数:在方法被调用时用于接纳外部传入的数据的变量。外部传入的数据的变量。实参:调用函数时实践传实参:调用函数时实践传给函数方式参数的数据给函数方式参数的数据函数的调用函数调用的过程分析i = 1 ; j = 2i = 100i ; j 成为渣滓成为渣滓函数的重载 函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只需它们的参数个数或类型不同即可。 如:public class Test public static void main(String

30、 args)int isum;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; 在同一个类中可以定义多个同名方法在同一个类中可以定义多个同名方法方法名重载方法名重载(overload)(overload)publ

31、ic class PrintStreampublic class PrintStreampublic void print(int i) public void print(int i) public void print(float f) public void print(float f) public void print(String s) public void print(String s) 重载方法的参数列表必需不同重载方法的参数列表必需不同 重载方法的前往值类型可以一样,也可以不同重载方法的前往值类型可以一样,也可以不同 调用时根据方法的参数类型来区别。调用时根据方法的参数类型

32、来区别。 print(3) print(3);print(1.2f)print(1.2f);print(“hello!print(“hello!) );函数的重载函数的重载 1.编写程序,定义三个重载方法并调用。方法名为mOL。三个方法分别接纳一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符CallMOL串信息。在主类()的main方法中分别用参数区别调用三个方法。2.定义三个重载方法max,第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,第三个方法求三个double值中的最大值,并分别调用三个方法。构造方法普通

33、用来创建对象的同时初始化对象。如构造方法普通用来创建对象的同时初始化对象。如class Personclass PersonString name;String name;int age;int age;public Person(String n , int a) name=n; age=a;public Person(String n , int a) name=n; age=a; 构造方法重载使得对象的创建更加灵敏,方便创建各种不同的对象。构造方法重载使得对象的创建更加灵敏,方便创建各种不同的对象。构造方法重载举例:构造方法重载举例: public class Person public

34、 class Person public Person(String name, int age, Date d) this(name,age); public Person(String name, int age, Date d) this(name,age); public Person(String name, int age) public Person(String name, int age) public Person(String name, Date d) public Person(String name, Date d) public Person() public P

35、erson() 构造方法重载,参数列表必需不同构造方法重载,参数列表必需不同public class Person public class Person private String name; private String name; private int age; private int age; private Date birthDate; private Date birthDate; public Person(String name, int age, Date d) public Person(String name, int age, Date d)

36、= name; = name; this.age = age;this.age = age; this.birthDate = d;this.birthDate = d; public Person(String name, int age) public Person(String name, int age) this(name, age, null); /=name; this.age=age; this(name, age, null); /=name; this.age=age; /this.birthDate=null; /th

37、is.birthDate=null; public Person(String name, Date d) public Person(String name, Date d) this(name, 30, d);this(name, 30, d); /=name; /=name; this.age=30;this.birthDate=d; this.age=30;this.birthDate=d; public Person(String name) public Person(String name) this(name, 30); this(name,

38、 30); /=name; this.age=30; /=name; this.age=30; (1)(1)定义定义PersonPerson类类, ,有有4 4个属性:个属性:String name; int age; String school; String String name; int age; String school; String majormajor,(2)(2)定义定义PersonPerson类的类的3 3个构造方法个构造方法: :第一个构造方法第一个构造方法Person(String n, int a)Person(String n, int a)设置类的设置类的namename和和ageage属属性;性;第二个构造方法第二个构造方法Person(String n, int a, String s)Person(String n, int a, String s)设置类的设置类的name, name, age age 和和schoolschool属性;属性;第三个构造方法第三个构造方法Person(String n, int a, String s, String m)Person(String n, int a, String s, String m)设置设置类的类的name, age

温馨提示

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

评论

0/150

提交评论