面向对象高级程序设计概要课件

上传人:晚**** 文档编号:252725266 上传时间:2024-11-19 格式:PPT 页数:46 大小:803.33KB
返回 下载 相关 举报
面向对象高级程序设计概要课件_第1页
第1页 / 共46页
面向对象高级程序设计概要课件_第2页
第2页 / 共46页
面向对象高级程序设计概要课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,面向对象高级程序设计,九江学院信息科学与技术学院软件教研室 王飞鹏,面向对象高级程序设计九江学院信息科学与技术学院软件教研室,1,主要内容,1,继承,2,多态性,3,抽象类和抽象方法,4,接口,5,内部类和匿名类,http:/ 继承 http:/,继承,1,创建子类,2,成员变量的隐藏和方法的重写,3,super,4,对象的上转型对象,http:/ 1 创建子类http:/,创建子类,继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个拥有共同属性的一般类,根据该一般类再创建具有特殊属性的新类。由继承而得到的类称为子类,(subclass),被继承的类称为父类(或叫超类,,superclass,)。,直接或间接被继承的类都是父类。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为。,Java,中不支多重继承。,http:/ SubClass extends SuperClass,上面的代码把,SubClass,声明为,SuperClass,的直接子类。如果,SuperClass,又是某个类的子类,则,SubClass,同时也是该类的,(,间接,),子类。子类可以继承父类的成员变量和方法。如果缺省,extends,子句,则该类为,java.lang.Object,的子类。子类可以继承父类中访问权限设定为,public,、,protected,、,default,的成员变量和方法。但是不能继承访问权限为,private,的成员变量和方法。,http:/ class DogClass,extends,MammalClass,boolean hasTail;/,name,eyeColor,已经从父类继承,public DogClass()/,隐式调用,super(),name=Chase,;,eyeColor=Black,;,age=2;,hasTail=true;,http:/ 1 创建子类http:/,成员变量的隐藏和方法的重写,当我们在子类中定义的成员变量和父类中的成员变量同名时,此时称子类的成员变量隐藏了父类的成员变量。当子类中定义了一个方法,并且这个方法的名字,返回类型,参数个数以及类型和父类的某个方法完全相同时,父类的这个方法将被隐藏,这时我们说重写了父类的方法。,子类通过成员变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为。,http:/ SuperClass /,父类,int y;,void setY(),y=0;,class SubClass extends SuperClass,int y;,/,父类变量,y,被隐藏,void setY()/,重写父类的方法,setY(),y=1;,http:/ 1 创建子类http:/,super,子类在隐藏了父类的成员变量或重写了父类的方法后,常常还要用到父类的成员变量,或在重写的方法中使用父类中被重写的方法以简化代码的编写,这时就要访问父类的成员变量或调用父类的方法,,Java,中通过,super,来实现对父类成员的访问。我们知道,,this,用来引用当前对象,与,this,类似,,super,用来引用当前对象的父类。,super,的使用可以分为下面三种情况:,1,),用来访问父类被隐藏的成员变量,如:,super.variable,2),用来调用父类中被重写的方法,如:,super.Method(paramlist),3),用来调用父类的构造方法,如:,super(paramlist),http:/ 子类在隐藏了父类,调用父类的构造方法的例子,class A /,类,A,public int n;/,公共类型的成员变量,public A(),public A(int n),this.n=n;,int method()return n;,public class B extends A /,类,B,public B(),super(15);,public static void main(String args),A aInstance=new B();,int b=aInstance.method();,System.out.println(,类,A,中的成员变量:,+b);,http:/ 1 创建子类http:/,对象的上转型对象,假设,A,类是,B,类的父类,class b extends B,当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中时,例如,A a;,A a=new B();,或,A a;,B b=new B();,a=b;,称这个父类对象,a,是子类对象,b,的上转型对象。,http:/ 类是B 类的父类,http:/ww,对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能,.,上转型对象具有如下特点:,1,)上转型对象不能操作子类新增的成员变量和子类新增的方法。,2,)上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法。,3,)如果子类重写了父类的某个方法后,当对象的上转对象调用这个方法时一定是调用了这个重写的方法,因为程序在运行时知道,这个上转对象的实体是子类创建的,只不过损失了一些功能而已。,不要将父类创建的对象和子类对象的上转型对象相混淆。,上转型对象在,Java,编程中是常见的。,可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所给的所有属性和功能。,http:/ Mammal /,哺乳动物类,private int n=40;,void,crySpeak,(String s)System.out.println(s);,public class Monkey extends Mammal /,猴子类,void,computer,(int aa,int bb)int cc=aa*bb;System.out.println(cc);,void,crySpeak,(String s)System.out.println(*+s+*);,public static void main(String args),Mammal mammal=new Monkey();,/mammal,是,Monkey,类的对象的上转型对象,.,mammal.crySpeak(I love this game);,/,puter(10,10);,Monkey monkey=(Monkey)mammal;,/,把上转型对象强制转化为子类的对象,.,puter(10,10);,http:/ love this game*,100,在上述例子中,上转对象,mammal,调用方法,:,mammal.crySpeak(I love this game);,得到的结果是”*,I love this game*”.,而不是,”,I love this game”,。,因为,mammal,调用的是子类重写的方法,crySpeak.,在,main,()中,如果出现下面的两行代码,那将是错误的:,mammal.n=1000;/,因为子类本来就没有继承,n,。,puter(10,10);/,因为,computer,方法是子类新增的方法。,http:/ 继承 http:/,多态性,多态,(Polymorphism),的意思就是用相同的名字来定义不同的方法。在,Java,中,普通类型的多态为重载,这就意味着可以使几个不同的方法使用相同的名字,这些方法以参数的个数不同、参数的类型不同等方面来进行区分,以使得编译器能够进行识别。,也可以这样讲,重载是同一个方法具有不同的版本,每个版本之间在参数特征方面有差异。重载是,Java,实现多态性的方式之一。,例如:,family(),方法可以有三个版本,如下:,family(),family(String ch)address=ch;,family(String ch,float n)address=ch;pay=n;,这些方法并存于程序中,编译时,编译器根据实参的类型和个数来区分从而调用那个方法。如果这些方法作为函数或过程同时出现在其它语言的程序中,如,C,,那将导致灾难性的错误。,http:/ 多态(Polymorphism)的意,在,Java,语言中,多态性主要体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态),如下:,1,)编译时多态在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。,2,)运行时多态由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。,如果子类重写了父类的方法,那么重写方法的调用原则如下:,Java,运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。,另外,方法重写时应遵循的原则如下:,改写后的方法不能比被重写的方法有更严格的访问权限。,改写后的方法不能比被重写的方法产生更多的异常,。,进行方法重写时必须遵从这两个原则,否则编译器会指出程序出错。,http:/ Parent,public,void,function(),System.out.println(I am in Parent!);,class Child extends Parent,private,void,function(),System.out.println(I am in Child!);,public class RTpolyTest,public static void main(String args),Parent pl=new Parent();,Parent p2=new Child();,p1.function();,p2.function();,http:/ RTpolyTest.java,RTpolyTest.java:8:function()in Child cannot override function()in Parent;attempting to assign weaker access privileges;was public,private void function(),RTpolyTest.java:16:cannot find symbol,symbol :variable p1,location:class RTpolyTest,p1.function();,2 errors,可以看出,该程序中实例,p2,调用,function(),方法时会导致访问权限的冲突。,http:/ 继承 http:/,抽象类和抽象方法,Java,语言中,用,abstract,关键字来修饰一个类时,这个类叫做抽象类。一个,abstract,类只关心它的子类是否具有某种功能,并不关心该功能的具体实现,功能的具体行为由子类负责实现的。例如:,public abstract class Drawing,public abstract void drawDot(int x,int y);,public void drawLine(int x1,int y1,int x2,int y2),用,abstract,来修饰一个方法时,该方法叫做抽象方法。与,final,类和方法相反,,abstract,类必须被继承,,abstract,方法必须被重写。,http:/ Java语言中,用abstract,当一个类的定义完全表示抽象的概念时,它不应该被实例化为一个对象。例如,Java,中的,Number,类就是一个抽象类,它只表示数字这一抽象概念,只有当它作为整
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!