有关面向对象的概念.ppt_第1页
有关面向对象的概念.ppt_第2页
有关面向对象的概念.ppt_第3页
有关面向对象的概念.ppt_第4页
有关面向对象的概念.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1.1 有关面向对象的概念,面向对象程序设计围绕的几个主要概念: 抽象数据类型、类、类型层次(子类),继承性、多态性。,1.1 有关面向对象的概念,class Car int color_number; int door_number; int speed; void brake() void speedUp() ; void slowDown() ,数据抽象类型,1.1 有关面向对象的概念,一个例子 在程序中操作对象是类的一个实例:即对象 创建一个对象 Hello obj=new Hello(); 调用方法 obj.showString(“Hello World!”),class Hello ,private String s;,public void showString () System.out.println(s); public void changeString(String str) s=str; return s;,1.1 有关面向对象的概念,什么是封装? 封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际,私有数据,方法,上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。,方法,数据,对象A,对象B,公有数据,1.1 有关面向对象的概念,什么是子类? 子类是作为另一个类的扩充或修正所定义的一个类.,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,1.1 有关面向对象的概念,什么是继承? 继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样.,class Car int color_number; int door_number; int speed; push_break() add_oil() ,class Trash_Car extends Car double amount; fill_trash() ,1.1 有关面向对象的概念,什么是方法的覆盖? 在子类中重新定义父类中已有的方法。,class Car int color_number; int door_number; int speed; push_break() speed=0; add_oil() ,class Trash_Car extends Car double amount; fill_trash() push_break() speed=speed-10; ,1.1 有关面向对象的概念,什么是方法的重载(多态性)? 在同一个类中至少有两个方法用同一个名字,但有不同的参数。,类,void show(int int_num),void show(double double_num),void show(nit nit_ um, float float_um),123,1.23,123,1.23,重载与多态的区别,方法的覆盖(overriding)和重载(overloading) 子孙类中定义的方法和祖先类中某个方法同名,同参数行,则祖先类中的该方法被覆盖. 方法的重载是指一个对象的多态性,即多个方法用相同的名称,但参数行不同.,类,void show(int int_num),void show(double double_num),void show(nit nit_ um, float float_um),123,1.23,123,1.23,对象与引用间的关系,s1,s2,10001,s2=s1;,a string,10001,class Mydate int year; int month; int day; ,Mydate today=new MyDate(),10008,today,s1=“a string”;,例: String s1;String s2;,1.7 Java中的类、方法和变量,试用一个简单的类,class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (“My car No. is :”+car_number); ,class CarDemo public static void main(String args) Car Democar=new Car(); DemoCar.set_number(3838); DemoCar.show_number(); ,My car number is 3838,1.7 Java中的类、方法和变量,类的继承 关系,class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (“My car No. is :”+car_number); ,class TrashCar extends Car int capacity; void set_capacity(int trash_car_capacity) capacity=trash_car_capacity; void show_capacity(); System.out.println(“My capacity is: ”+ capacity);,1.7 Java中的类、方法和变量,TrashCar中继承了Car中的两个方法,class CarDemo public static void main(String args) TrashCar DemoTrashCar=new TrashCar(); DemoTrashCar.set_number(4949); DemoTrashCar.set_capacity(20); DemoTrashCar.show_number(); DemoTrashCar.show_capacity(); ,Car是父类, TrashCar是子类,1.7 Java中的类、方法和变量,何时选择继承性? 一个很好的经验: “B是一个A吗?” 如果是则让B做A的子类.,常犯的错误A有一个B吗? 例如让汽车轮子成为汽车的子类是错误的,1.10 对象的构造函数,使用new来做内存配置,class Demo1 /数组的配置 public static void main(String args) int array; array=new int55; array14=5; ,class myClass /对象实体的产生 int data=5; class Demo2 public static void main(String args) myClass obj;/建立一个引用 obj=new myClass(); System.out.println(obj.data); ,1.10 对象的构造函数,Constructor和finalizer constructor(构造函数),在一个类中和类同名的方法叫构造函数.系统在产生对象时会自动执行.,class Point int x,y; Point() x =0;y=0; Point(int new_x,int new_y) x=new_x,y=new_y; ,class UsePoint Point point_A=new Point(); Point point_B=new Point(5,7); ,1.10 对象的构造函数,构造函数应包含哪些内容? 构造函数多半定义一些初值或内存配置工作 一个类可以有多个构造函数(重载),根据参数的不同决定执行哪一个. 如果程序中没有定义构造函数,则创造实例时使用的是缺省函数,它是一个无内容的空函数.,This关键字,this this指自己这个对象 this的作用是要将自己这个对象当作参数,传送给别的对象中的方法.,class ThisClass public static void main() Bank bank=new Bank(); bank.someMethod(this); ,class Circle int r; Circle(int r) this.r=r; public area() return r*r*3; ,super指这个对象的父类 super用来引用父类中的方法及变量数据. public class apple extends fruits public apple(int price) super(price); 以上句子表示使用超类的构造函数生成实例 super必须是子类构造器的第一条语句,Super关键字,1.8 Java名空间及访问规则,每个类都创造了有自己的名字空间,指方法和变量可以知道彼此的存在,可以使用。 abstract类不能直接产生属于这个类的对象 final类不能被其他任何类所继承(安全的考虑) public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用. friendly(缺省)类只能被本包中的其它类使用,1.8 Java名空间及访问规则,例:不正确的引用 class StaticError String mystring=“hello”; public static void main(String args) System.out.println(mystring); 错误信息:cant make a static reference to nonstatic variable. 为什么不正确? 只有对象的方法可以访问对象的变量.,1.8 Java名空间及访问规则,解决的办法: 1. 将变量改称类变量 class StaticError static String mystring=“hello”; public static void main(String args) System.out.println(mystring); ,1.8 Java名空间及访问规则,2. 先创建一个类的实例 class NoStaticError public static void main(String args) String mystring=“hello”; System.out.println(mystring); ,1.7 Java中的类、方法和变量,类的严格定义及修饰字,类的修饰字 class 类名称 extends 父类名称 . ,public, abstract, final或者没有,变量修饰字 变量数据类型 变量名1,变量名2=变量初值;,方法修饰字 方法的返回值类型 方法名称(参数1,参数2, /方法的内容 ,方法和变量的定义及修饰字,public、protected、private,名空间及访问规则 -package,class/object,member,局部变量 -public ,private,protected,default,1.8 Java名空间及访问规则,2. 先创建一个类的实例 class NoStaticError public static void main(String args) String mystring=“hello”; System.out.println(mystring); ,1.9 Java中的接口,利用接口可实现多重 继承(可同时实现多个接口) 接口的作用和抽象类 类似,指定原型,不直 接定义方法的内容. 关键字implement用 来实现方法,即在使用时要用给出方法的实际内容 接口中的方法和变量 是public的,public interface Stack void push(object x); object pop();,class A extends Applet implements Stack void push(object x) ;/具体内容 object pop() ;/具体内容 ,1.8 Java名空间及访问规则,变量和方法的修饰字public、protected、private public: 任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。,class ABC public int pub_i=5; public void show)() System.out.println (“pub_i”+pub_i); ,1.8 Java名空间及访问规则,class Demo public static void main(String args) ABC abc=new ABC(); System.out.println(“abc.pub_i”+abc.pub_i); abc.pub_i=10; abc.show(); ,abc.pub_i=5 pub_i=10;,1.8 Java名空间及访问规则,protected变量和方法 如果一个类中变量或方法有修饰字protected,同一类,同一包可以使用。不同包的类要使用,必须是该类的子类可以存取变量或调用,public class ABC protected int pro_i=5; protected void show() System.out.println (“pro_i=” +pro_i;) ,1.8 Java名空间及访问规则,不同中的类不能使用,class DEF public static void main(String args) ABC abc=new ABC(); System.out.println (“_i=“+_i); abc.pub_i=10; abc.show(); ,import mytest.pack.ABC; class DEF extends ABC public static void main(String agrs) DEF def=new DEF(); System.out.println(def.i); def.i=10; def.show(); ,pro_i=5 pro_i=10,1.8 Java名空间及访问规则,不同包但是是子类,1.8 Java名空间及访问规则,private 不允许任何其他类存取和调用 friendly(前边没有修饰字的情况) 在同一程序包中出现的类才可以直接使用它的数据和方法.,1.8 Java名空间及访问规则,当子类中的变量名与父类的相同,原来的变量被遮盖.,class A int data_a=3; class B extends A int data_a=5; class C extends B void print_out() System.out.println(“data_a= ”+data_a); System.out.println(“A.data_a= ”+A.data_a); System.out.println(“B.data_a= ”+B.data_a); ,data_a=5 A.data_a=3 B.data_a=5,class demo public static void main(String args) C c=new C(); c.println_out(); ,1.8 Java名空间及访问规则,到此为止-final final在方法之前,防止该方法被覆盖. final在类之前,标是该类不能被继承 final在变量之前,定义一个常量. 属于类的变量和方法-static static 在变量或方法之前, 表明它们是属于类的,class ABCD char data; static int_share_data; class Demo ABCD a,b,c,d,1. 编写一个Recta

温馨提示

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

评论

0/150

提交评论