欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    院校资料Java面向对象编程进阶.ppt

    • 资源ID:88330180       资源大小:218.50KB        全文页数:39页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    院校资料Java面向对象编程进阶.ppt

    院校资料院校资料Java面向对面向对象编程进阶象编程进阶12021/2/23 在在Java编程语言中,通过继承可利用已有的类,并扩展它的属性编程语言中,通过继承可利用已有的类,并扩展它的属性和方法。这个已有的类可以是语言本身提供的、其他程序员编写的或程和方法。这个已有的类可以是语言本身提供的、其他程序员编写的或程序员原来编写的。序员原来编写的。假如在声明类假如在声明类A时,指明类时,指明类A继承了类继承了类B类类B是一个已定义了的类是一个已定义了的类,那么类,那么类A通常就拥有了类通常就拥有了类B的成员变量和方法。此时,类的成员变量和方法。此时,类B称为类称为类A的父类的父类superclass,父类也称为超类或基类;类父类也称为超类或基类;类A称为类称为类B的子类的子类subclass,子类也称为派生类。,子类也称为派生类。Object类是类是Java中所有类的父类,也中所有类的父类,也就是说就是说Java中的类直接或间接有中的类直接或间接有Object类派生而来。类派生而来。Java中实行单继承,即一个类只能有一个父类。中实行单继承,即一个类只能有一个父类。5.3.1 继承概述继承概述 一个类只可继承一个父类,但一个类可以有被多个子类一个类只可继承一个父类,但一个类可以有被多个子类继承。因此类之间的关系就形成了所谓的树形层次构造:继承。因此类之间的关系就形成了所谓的树形层次构造:类类A类类C1n类类C11类类Bm类类B2类类B1类类Cm1类类Cmn在在JavaJava中,类是中,类是JavaJava所有类的父类。所有类的父类。类继承语法形式如下:类继承语法形式如下:修饰符修饰符 class SubClassName extends SupperClassName extends是继承关键词。是继承关键词。SubClassName是新的子类名,是新的子类名,SupperClassName是继承的父类名。父类名是必需的,而且是继承的父类名。父类名是必需的,而且只能有一个,因为只能有一个,因为Java中实行单继承。父类名所指定的类必中实行单继承。父类名所指定的类必须是在当前编译单元中可以访问的类,否那么会产生编译错须是在当前编译单元中可以访问的类,否那么会产生编译错误。误。5.3.2 继承语法格式继承语法格式 子类的特性子类的特性:子类拥有其父类的所有属性和方法。但父类中说明为子类拥有其父类的所有属性和方法。但父类中说明为private的属性和方法,子类不可直接访问。的属性和方法,子类不可直接访问。子类可以对父类的方法覆盖或重载。子类可以对父类的方法覆盖或重载。例例.5-2子类与父类子类与父类 class class A A private int a;private int a;protected int b;protected int b;public int c;public int c;public void setA(int aa)a=aa;public void setA(int aa)a=aa;public int getA()return a;public int getA()return a;class class B B extends extends A A int d;int d;public static void main(String args)public static void main(String args)B b1=new B();B b1=new B();b1.setA(10);b1.b=20;b1.c=30;b1.setA(10);b1.b=20;b1.c=30;b1.d=b1.getA()+b1.b+b1.c;b1.d=b1.getA()+b1.b+b1.c;System.out.print(b1.d);System.out.print(b1.d);子类可以对父类的方法覆盖或重载。子类可以对父类的方法覆盖或重载。方法覆盖方法覆盖:子类的方法首部与父类的方法首部一样,但是子类重新实子类的方法首部与父类的方法首部一样,但是子类重新实现了该方法。现了该方法。方法重载方法重载:Java中方法可重载中方法可重载,就是方法名一样但形参列表不同之方就是方法名一样但形参列表不同之方法。法。子类的方法对父类的方法也可重载。子类的方法对父类的方法也可重载。5.3.3 5.3.3 子类对父类成员重载子类对父类成员重载 假如子类声明了一个与父类的成员变量同名的成员变量,那么称父假如子类声明了一个与父类的成员变量同名的成员变量,那么称父类的该成员变量被隐藏类的该成员变量被隐藏Hiding,假如子类声明了一个与父类的成员,假如子类声明了一个与父类的成员方法同名的成员方法,那么称父类的该成员方法被重写方法同名的成员方法,那么称父类的该成员方法被重写Overriding。关键字关键字this和和super分别用来指明子类和父类中同名的成员变量和方法。分别用来指明子类和父类中同名的成员变量和方法。当父类的成员变量、子类的成员变量和类的对象方法使用的部分变量三当父类的成员变量、子类的成员变量和类的对象方法使用的部分变量三者同名,或其中两个同名时,可以使用关键字者同名,或其中两个同名时,可以使用关键字this和和super来指定所要使来指定所要使用的变量。用的变量。继承是面向对象编程的主要优点之一,它对如何设计继承是面向对象编程的主要优点之一,它对如何设计Java类有着直类有着直接的影响。继承有如下几点好处:接的影响。继承有如下几点好处:1 1它可以利用已有的类来创立自己的类,只需要指出自己的类和已有的其它的类有它可以利用已有的类来创立自己的类,只需要指出自己的类和已有的其它的类有什么不同即可,而且还可以动态访问其它有关的类中的信息。什么不同即可,而且还可以动态访问其它有关的类中的信息。2 2通过继承,可以利用通过继承,可以利用JavaJava类库所提供的丰富而有用的类,这些类都已经被很好地类库所提供的丰富而有用的类,这些类都已经被很好地实现。实现。3 3当设计很大的程序时,继承可以使程序组织得更加层次明晰,有利于程序设计和当设计很大的程序时,继承可以使程序组织得更加层次明晰,有利于程序设计和减少错误的发生。减少错误的发生。例例5-3 5-3 子类与父类的继承关系子类与父类的继承关系 public class Point /定义定义Point类类 int x;int y;public Point()/public Point()/构造方法构造方法,构造原点构造原点(0,0)(0,0)x=0;y=0;x=0;y=0;public Point(int X,int Y)/public Point(int X,int Y)/构造方法构造方法,按按给给定的定的X X、Y Y 值值 x=X;y=Y;/x=X;y=Y;/构成一个点构成一个点 X,YX,Y public double distance()/public double distance()/定定义义方法方法,求点到坐求点到坐标标原点的原点的间间隔隔 return Math.sqrt(x*x+y*y);/return Math.sqrt(x*x+y*y);/调调用用MathMath类类的方法的方法sqrt()sqrt()public static void draw()/public static void draw()/类类方法方法draw(),draw(),画点画点 System.out.println(Point:a point.);System.out.println(Point:a point.);class ColorPoint extends Point class ColorPoint extends Point int color;int color;public static void draw()/public static void draw()/复盖了父复盖了父类类的的draw()draw()方法方法 System.out.println(“ColorPoint:a color point.System.out.println(“ColorPoint:a color point.););class MapPoint extends ColorPoint/class MapPoint extends ColorPoint/定定义类义类,继继承承ColorPointColorPoint类类 /类类ObjectObject、PointPoint均是均是MapPointMapPoint的父的父类类,但都不是直但都不是直接父接父类类String name;/String name;/地地图图上的点有自己的名字,如城市名上的点有自己的名字,如城市名 public static void draw()/public static void draw()/复盖了父复盖了父类类的的draw()draw()方法方法 System.out.println(MapPoint:a map color point.);System.out.println(MapPoint:a map color point.);public class SuperSubpublic class SuperSub public static void main(String args)public static void main(String args)Point.draw();Point.draw();ColorPoint.draw();ColorPoint.draw();MapPoint.draw();MapPoint.draw();此程序运行后将输出如下结果:此程序运行后将输出如下结果:Point:a point.ColorPoint:a color point.MapPoint:a map color point.5.3.4 null、this、super Java Java语语言言标标准中,每个准中,每个类类均有均有这样这样3 3个个对对象:象:null null、thisthis、supersuper null “null “空空变变量,表示量,表示这这个个对对象不存在相象不存在相应应的的实实例例 例如:例如:Rectangle rect=null;Rectangle rect=null;当一个当一个对对象不再有用象不再有用时时,应应当去除它以当去除它以释释放所占用的内存空放所占用的内存空间间,这这只要只要赋赋予它予它nullnull即可。即如:即可。即如:rect=null;rect=null;this 代表对象本身代表对象本身 在类的方法中,假如要引用的变量名或方法在类的方法中,假如要引用的变量名或方法名的成员变量名或成员方法名一样,那么可通名的成员变量名或成员方法名一样,那么可通过使用过使用this 来代表对象本身,即引用对象自身。来代表对象本身,即引用对象自身。super 代表父类代表父类 当子类中有与父类同名的变量或方法时,可当子类中有与父类同名的变量或方法时,可加上加上super限定词来指明是对父类的变量或方法限定词来指明是对父类的变量或方法的引用。的引用。下面是下面是this和和super是使用的例子。是使用的例子。class Rectangleclass Rectangle int width,length;int width,length;Rectangle(int width,int length)/Rectangle(int width,int length)/构造方法构造方法 this.width=width;/this this.width=width;/this代表所代表所创创立的立的对对象象 this.length=length;this.length=length;public void drawRect()public void drawRect()System.out.println(this is Rectangle!);System.out.println(this is Rectangle!);例例5-4 5-4 用用thisthis表示引用自身表示引用自身 上面这个例子中,用上面这个例子中,用thisthis表示引用对象本身。表示引用对象本身。在构造方法中,可以使用在构造方法中,可以使用supersuper来引用父类的构造方法。来引用父类的构造方法。例例5-5 5-5 用用supersuper引用父类的构造方法引用父类的构造方法 class class fillRectanglefillRectangle extends Rectangle extends Rectanglepublic fillRectangle(int w,int num)public fillRectangle(int w,int num)/构造方法构造方法 super(w,num);super(w,num);/调用父用父类的构造方法的构造方法 private String makeString(char ch,int num)private String makeString(char ch,int num)StringBuffer str=new StringBuffer();StringBuffer str=new StringBuffer();for(int i=num;i0;i-)for(int i=num;i0;i-)str.append(ch);str.append(ch);return str.toString();return str.toString();在在这个个类的构造方法中并没有写新的程序,而是的构造方法中并没有写新的程序,而是调用了父用了父类的构造函数,的构造函数,用于初始化用于初始化实例例变量。量。public void drawRect()public void drawRect()for(int i=length;i0;i-)/for(int i=length;i0;i-)/用字符用字符“#“#绘绘制制(填填满满)一个矩形一个矩形 System.out.pringln(makeString(#,width);System.out.pringln(makeString(#,width);例例.5-6.5-6 用用 super super 指明引用父类的变量指明引用父类的变量class class A A String str=aaaaa;String str=aaaaa;class class B B extends A extends A String str=bbbbb;String str=bbbbb;void f()void f()System.out.println(System.out.println(父父类变量量strstr:+super.str);+super.str);System.out.println(System.out.println(子子类变量量strstr:+str);+str);public static void main(String args)public static void main(String args)B b1=new B();B b1=new B();b1.f();b1.f();例例.5-7.5-7 对象变量、静态变量的继承。对象变量、静态变量的继承。class class A A static int a;int b;static int a;int b;classclass B B extends A extends Apublic static void main(String args)public static void main(String args)A.a=10;B.a=20;A.a=10;B.a=20;System.out.println(A.a=+A.a+,B.a=+B.a);System.out.println(A.a=+A.a+,B.a=+B.a);A a1=new A();A a1=new A();B b1=new B(),b2=new B();B b1=new B(),b2=new B();a1.b=3;b1.b=4;b2.b=5;a1.b=3;b1.b=4;b2.b=5;System.out.println(a1.b);System.out.println(a1.b);System.out.println(b1.b);System.out.println(b1.b);System.out.println(b2.b);System.out.println(b2.b);final final修饰符可以定义一个不能被继承的类,即不能再有子类。修饰符可以定义一个不能被继承的类,即不能再有子类。java.lang.Systemjava.lang.System类就是类就是finalfinal类的一个例子,它是最终的类。类的一个例子,它是最终的类。final final修饰符通修饰符通常是出于平安的目的而使用的,因为不能继承常是出于平安的目的而使用的,因为不能继承finalfinal类,人们就不能重载或覆盖类,人们就不能重载或覆盖它的任何方法。假如允许一个类被继承,其被重载或覆盖的方法可能会被改写。它的任何方法。假如允许一个类被继承,其被重载或覆盖的方法可能会被改写。保证某个特定的方法在类层次关系上的某层以后只有一个定义,这对于那些平保证某个特定的方法在类层次关系上的某层以后只有一个定义,这对于那些平安性非常关键的类是非常必要的。安性非常关键的类是非常必要的。无论是用于修饰变量、方法还是类,无论是用于修饰变量、方法还是类,finalfinal关键字的目的都是一样的:增强代关键字的目的都是一样的:增强代码的平安性。码的平安性。例例4.8 final4.8 final类说明类说明final class EndClass extends SupperClass final class EndClass extends SupperClass 5.3.5 final类类(最终类最终类)n5.4.1 包说明包说明 n5.4.2 包的层次构造包的层次构造 n5.4.3 包的使用包的使用 5.4 5.4 包包 包是为理解决设计较大规模的程序而引入的概念。一个大的系统,包是为理解决设计较大规模的程序而引入的概念。一个大的系统,往往包含多种对象,需要多个类来描绘。这些类以逻辑方式组合在一往往包含多种对象,需要多个类来描绘。这些类以逻辑方式组合在一起,形成了所谓的包。起,形成了所谓的包。使用包可提供控制访问的范围。类、方法缺省访问权限时,就只可使用包可提供控制访问的范围。类、方法缺省访问权限时,就只可在它所属的包中被访问,说明为在它所属的包中被访问,说明为publicpublic的才可在其他包中被访问。的才可在其他包中被访问。一个一个JavaJava程序可以由多个包组成。程序可以由多个包组成。一个包可由一个或多个源程序一个包可由一个或多个源程序文件文件(.java(.java文件文件)构成,有多个源程序文件时要分别建立。注意:每个构成,有多个源程序文件时要分别建立。注意:每个源程序文件中最多只能有一个说明为源程序文件中最多只能有一个说明为publicpublic的类。的类。包说明语句总是源程序文件中的第一个语句包说明语句总是源程序文件中的第一个语句(可省略),其格式如下:,其格式如下:package package 包名;包名;例例.5-8.5-8 包说明包说明上面的程序定义了一个包含上面的程序定义了一个包含3 3个类的包。个类的包。5.4.1 包说明包说明package package SamplePackage;SamplePackage;public class Class1 public class Class1 class Class2 class Class2 class Class3 class Class3 包中多个类之间包中多个类之间不可嵌套定义不可嵌套定义,但,但前后位置无关前后位置无关。在在JavaJava中中,包采用如下的层次构造:包采用如下的层次构造:子包子包 类文件和接口文件类文件和接口文件一个类或一个接口编译后都产生一个相应的字节码文件一个类或一个接口编译后都产生一个相应的字节码文件 由于包的层次构造类似文件夹的层次构造,所以,为了实现由于包的层次构造类似文件夹的层次构造,所以,为了实现上的简单,上的简单,JavaJava对包的存储作了一定的规定。系统中所有的对包的存储作了一定的规定。系统中所有的JavaJava包、类的源文件、字节码文件都必须存放在单一文件夹下包、类的源文件、字节码文件都必须存放在单一文件夹下或它的子文件夹中。在实际的或它的子文件夹中。在实际的JavaJava开发环境中,通常提供了一开发环境中,通常提供了一个名为个名为CLASSPATHCLASSPATH的环境变量,这个环境变量中包含了一系的环境变量,这个环境变量中包含了一系列的途径名,它们就是存储列的途径名,它们就是存储JavaJava类、接口和包的途径。系统将类、接口和包的途径。系统将按照环境变量按照环境变量CLASSPATHCLASSPATH中途径出现的先后顺序逐个搜索,中途径出现的先后顺序逐个搜索,来寻找某个类、接口或包。以下是一个来寻找某个类、接口或包。以下是一个Windows Windows 环境变量的例环境变量的例子:子:CLASSPATH=C:JDKlib;C:JDKsrc;CLASSPATH=C:JDKlib;C:JDKsrc;5.4.2 包的层次构造包的层次构造1.1.用户自己定义的包的使用用户自己定义的包的使用例例5-9 5-9 包的使用包的使用5.4.3 包的使用包的使用/文件文件:packoneClassBeUsed.java:packoneClassBeUsed.javapackage package packonepackone;/定定义包包packonepackonepublic class ClassBeUsedpublic class ClassBeUsed private int counts;private int counts;ClassBeUsed()ClassBeUsed()/无参构造方法无参构造方法 setcounts(0);setcounts(0);ClassBeUsed(int i)ClassBeUsed(int i)/有参构造方法有参构造方法 setcounts(i);setcounts(i);protected void setcounts(int i)protected void setcounts(int i)counts=i;counts=i;public int getcounts()public int getcounts()return counts;return counts;上面的程序中创立了两个包上面的程序中创立了两个包packone和和packtwo。在在packone 包中定义了一个包中定义了一个 public类类 classBeUsed,在,在packtwo包中定义了一个包中定义了一个 public类类 UsingClass。/文件:文件:packtwoUsingClass.javapacktwoUsingClass.javapackage packtwo;/package packtwo;/定定义义包包packtwopacktwopublic class UsingClass public class UsingClass public static void main(Stringargs)public static void main(Stringargs)ClassBeUsed cb=new ClassBeUsed(2);ClassBeUsed cb=new ClassBeUsed(2);/创创立包立包 packone packone的的ClassBeUsedClassBeUsed类类的的实实例例cb cb System.out.println(cb.getcounts();System.out.println(cb.getcounts();packtwo的的UsingClass类的类的main方法中的语句:方法中的语句:ClassBeUsed cb=new ClassBeUsed(2);是要创立包是要创立包packone的的ClassBeUsed类的实例类的实例cb。编译里例编译里例5-95-9中的程序,那么会产生如下的错误:中的程序,那么会产生如下的错误:Undefined name ClassBeUsed Undefined name ClassBeUsed Cannot find definition for class ClassBeUsed Cannot find definition for class ClassBeUsed原因何在原因何在?仔细地观察程序:仔细地观察程序:package package packonepackone;public class ClassBeUsedpublic class ClassBeUsed private int counts;private int counts;ClassBeUsed()ClassBeUsed()/无参构造方法无参构造方法 setcounts(0);setcounts(0);ClassBeUsed(int i)ClassBeUsed(int i)/有参构造方法有参构造方法 package package packtwopacktwo;public class UsingClasspublic class UsingClass public static void main(Stringargs)public static void main(Stringargs)ClassBeUsed cb=new ClassBeUsed(2);ClassBeUsed cb=new ClassBeUsed(2);System.out.println(cb.getcounts();System.out.println(cb.getcounts();/文件:文件:packoneClassBeUsed.javapackoneClassBeUsed.javapackage package packonepackone;public class ClassBeUsed public class ClassBeUsed private int counts;private int counts;public ClassBeUsed()/public ClassBeUsed()/构造方法声明构造方法声明为为publicpublic setcounts(0);setcounts(0);public ClassBeUsed(int i)/public ClassBeUsed(int i)/构造方法声明构造方法声明为为publicpublic setcounts(i);setcounts(i);如今对例如今对例5-95-9程序做一些修改,改正后的程序如下:程序做一些修改,改正后的程序如下:/文件文件:packtwoUsingClass.java:packtwoUsingClass.javapackage package packtwopacktwo;import packone.ClassBeUsed;import packone.ClassBeUsed;/引入包引入包packtwopacktwo的类的类ClassBeUsedClassBeUsedpublic class UsingClasspublic class UsingClass public static void main(String args)public static void main(String args)ClassBeUsed cb=new ClassBeUsed(2);ClassBeUsed cb=new ClassBeUsed(2);System.out.println(cb.getcounts();System.out.println(cb.getcounts();/文件文件:packtwoUsingClass.Java:packtwoUsingClass.Javapackage package packtwopacktwo;public class UsingClasspublic class UsingClass public static void main(String args)public static void main(String args)packone.ClassBeUsed cb=new packone.ClassBeUsed(2);packone.ClassBeUsed cb=new packone.ClassBeUsed(2);System.out.println(cb.getcounts();System.out.println(cb.getcounts();也可如下修改:也可如下修改:2.2.系统包的使用系统包的使用 Java Java系统中建立了很多非常有用的包,供用户使用。这系统中建立了很多非常有用的包,供用户使用。这些包以些包以“java.“java.开头,作为开头,作为java java 的一个标准部分发布的。的一个标准部分发布的。其使用方法与用户自定义的包一样,只需要在程序开场处其使用方法与用户自定义的包一样,只需要在程序开场处(包定义语句后包定义语句后)加上加上import import 语句引入所需包中的类即可。语句引入所需包中的类即可。其格式如下:其格式如下:import import 包名包名.类名;类名;或:或:import import 包名包名.*.*;学习学习JavaJava,必须学习,必须学习Java Java 常用包中的类。从第六章开常用包中的类。从第六章开场,将叫详细地介绍场,将叫详细地介绍JavaJava常用包的使用。常用包的使用。引入某包的一个类引入某包的一个类引入某包的所有类引入某包的所有类 一个一个JavaJava程序可以由多个包组成。程序可以由多个包组成。假如想使一个类能被其它包引用,那么该类必须是由假如想使一个类能被其它包引用,那么该类必须是由publicpublic修饰的类公共类,其构造方法也必须声明为修饰的类公共类,其构造方法也必须声明为publicpublic。要创立一个非本包的公共类的实例时,可以使用两种方法要创立一个非本包的公共类的实例时,可以使用两种方法:1 1在类名前带上包名加以限定在类名前带上包名加以限定 2 2在程序头部在程序头部(包定义语句后包定义语句后)使用使用import import 语句引入所需语句引入所需包中的类。包中的类。包小结包小结5.5 5.5 接口接口 接口的概念接口的概念 接口的说明接口的说明 接口的使用接口的使用 类体的构造:一个类的类体由一些成员变量和一些成员方法组成。类体的构造:一个类的类体由一些成员变量和一些成员方法组成。假如一个类的类体中仅含有假如一个类的类体中仅含有finalfinal修饰的成员变量修饰的成员变量(即常量即常量)和一些抽象的和一些抽象的成员方法成员方法(方法框架,即方法体只是个分号方法框架,即方法体只是个分号),那么这样的类就改叫做接口,那么这样的类就改叫做接口(interface)(interface),而不再叫做类,而不再叫做类,即接口就是一些常量和抽象方法的定义的集合即接口就是一些常量和抽象方法的定义的集合,它是一个设计框架。它是一个设计框架。接口中的方法只是一个定义框架而没有详细的实现代码接口中的方法只是一个定义框架而没有详细的实现代码,所以接口所以接口是不能象类一样建立实例,而只能再用类来实现接口中的方法,然后我们再是不能象类一样建立实例,而只能再用类来实现接口中的方法,然后我们再引用这样的类。引用这样的类。5.5.1 接口的概念接口的概念 接口是面向对象的一个重要思想接口是面向对象的一个重要思想,利用接口的利用接口的“设计与实现别离的设计与实现别离的特性,使利用接口的程序不受不同接口实现的影响,不受接口实现改变的特性,使利用接口的程序不受不同接口实现的影响,不受接口实现改变的影响。软件设计者在设计程序时,也许只想设计一个框架,如只提供一个影响。软件设计者在设计程序时,也许只想设计一个框架,如只提供一个类的抽象的接口,而不希望去详细实现它。使用接口就可以很完美地解决类的抽象的接口,而不希望去详细实现它。使用接口就可以很完美地解决这个问题。这个问题。接口可以继承接口可以继承 和类不同,一个接口可以继承多个其它的接口,也就是说,和类不同,一个接口可以继承多个其它的接口,也就是说,接口是支持多继承的接口是支持多继承的。接口中的方法要用类来实现接口中的方法要用类来实现 一个类说明实现一个接口,就是承诺它将一个类说明实现一个接口,就是承诺它将实现接口中声明的所有方法。实现接口中声明的所有方法。一个类可以实现多个接口一个类可以实现多个接口 一个接口也可以被多个类实现一个接口也可以被多个类实现 接口可以多继承,即一个接口可以有多个父接口,但和类的继承不同,子接口只是从接口可以多继承,即一个接口可以有多个父接口,但和类的继承不同,子接口只是从父接口那里继承了方法的说明,而不会有方法的实现和实例变量的说明。这样,就降低了父接口那里继承了方法的说明,而不会有方法的实现和实例变量的说明。这样,就降低了完全多继承所带来的复杂性。完全多继承所带来的复杂性。小结:接口和类之间的区别小结:接口和类之间的区别 1 1类只能单继承,而接口可以多继承。类只能单继承,而接口可以多继承。2 2类中的方法可以是详细的,也可以抽象的。接口中类中的方法可以是详细的,也可以抽象的。接口中的方法都是抽象的。的方法都是抽象的。3 3接口中的方法要用类来实现,一个类可以实现一个接口中的方法要用类来实现,一个类可以实现一个接口,也可以实现多个接口。接口,也可以实现多个接口。4 4对于继承性,子类可以直接继承父类的方法,也可对于继承性,子类可以直接继承父类的方法,也可以覆盖父类的方法。而子接口仅从父接口那里继承了方法以覆盖父类的方法。而子接口仅从父接口那里继承了方法的说明,并没有方法的实现。因此,任需要用类来实现子的说明,并没有方法的实现。因此,任需要用类来实现子接口中的所有方法。接口中的所有方法。5.5.2 接口的说明接口的说明 接口类型的说明类似于类的说明,它由两部分组成:接口类型的说明类似于类的说明,它由两部分组成:接口说明和接口体。接口说明和接口体。接口首说明接口首说明 接口体接口体 像类一样,编译好的接口保存在像类一样,编译好的接口保存在Class文件中。文件中。接口首说明的形式如下:接口首说明的形式如下:修饰符修饰符 interface interface 接口名接口名 extends extends 接口序列接口序列 interface interface是关键字,表示定义接口。是关键字,表示定义接口。修饰符是可选的。当没有修饰符的时候,表示此接口的访修饰符是可选的。当没有修饰符的时候,表示此接口的访问只限于同包的类。假如使用修饰符,那么只能用问只限于同包的类。假如使用修饰符,那么只能用publicpublic修饰修饰符,表示此接口是公有的,在任何地方都有可以引用它,这一符,表示此接口是公有的,在任何地方都有可以引用它,这一点和类是一样的。点和类是一样的。接口说明中的接口说明中的extednsextedns关键词和类说明中的关键词和类说明中的extendsexte

    注意事项

    本文(院校资料Java面向对象编程进阶.ppt)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开