面向对象高级程序设计.ppt

上传人:wuy****n92 文档编号:92005678 上传时间:2023-05-30 格式:PPT 页数:53 大小:266.16KB
返回 下载 相关 举报
面向对象高级程序设计.ppt_第1页
第1页 / 共53页
面向对象高级程序设计.ppt_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《面向对象高级程序设计.ppt》由会员分享,可在线阅读,更多相关《面向对象高级程序设计.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java程序设计之网络编程程序设计之网络编程教学课件电子邮件:电子邮件:电子邮件:电子邮件:第第5章章 面向对象高级程序设计面向对象高级程序设计主要内容主要内容5.1 5.1 继承继承继承继承 5.25.2多态性多态性多态性多态性5.3 5.3 抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法5.45.4接口接口接口接口5.55.5内部类和匿名类内部类和匿名类内部类和匿名类内部类和匿名类5.1 继承继承 5.1.1 5.1.1 创建子类创建子类创建子类创建子类5.1.2 5.1.2 成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方

2、法的重写5.1.3 5.1.3 supersuper5.1.4 5.1.4 对象的上转型对象对象的上转型对象对象的上转型对象对象的上转型对象5.1.1 创建子类创建子类n n继承是一种由已有的类创建新类的机制。利用继承继承是一种由已有的类创建新类的机制。利用继承继承是一种由已有的类创建新类的机制。利用继承继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个拥有共同属性的一般类我们可以先创建一个拥有共同属性的一般类我们可以先创建一个拥有共同属性的一般类我们可以先创建一个拥有共同属性的一般类,根据该根据该根据该根据该一般类再创建具有特殊属性的新类。由继承而得到一般类再创建具有特殊属性的

3、新类。由继承而得到一般类再创建具有特殊属性的新类。由继承而得到一般类再创建具有特殊属性的新类。由继承而得到的类称为子类的类称为子类的类称为子类的类称为子类(subclass),(subclass),被继承的类称为父类被继承的类称为父类被继承的类称为父类被继承的类称为父类(或叫超类,(或叫超类,(或叫超类,(或叫超类,superclasssuperclass)。)。)。)。n n直接或间接被继承的类都是父类。子类继承父类的直接或间接被继承的类都是父类。子类继承父类的直接或间接被继承的类都是父类。子类继承父类的直接或间接被继承的类都是父类。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父

4、状态和行为,同时也可以修改父类的状态或重写父状态和行为,同时也可以修改父类的状态或重写父状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为。类的行为,并添加新的状态和行为。类的行为,并添加新的状态和行为。类的行为,并添加新的状态和行为。JavaJava中不支多中不支多中不支多中不支多重继承。重继承。重继承。重继承。5.1.1 创建子类创建子类n n通过在类的声明中加入通过在类的声明中加入通过在类的声明中加入通过在类的声明中加入extendsextends子句来创建一个类的子类,子句来创建一个类的子类,子句来创建一个类的子类,子句来创建一个类的子类,其格式如下:其格式如下

5、:其格式如下:其格式如下:class SubClass extends SuperClassclass SubClass extends SuperClass 上面的代码把上面的代码把SubClassSubClass声明为声明为SuperClassSuperClass的直接子类。如果的直接子类。如果SuperClassSuperClass又是某个类的子类,则又是某个类的子类,则SubClassSubClass同时也是该类的同时也是该类的(间接间接)子类。子类可以继承父类的成员变量和方法。如果缺子类。子类可以继承父类的成员变量和方法。如果缺省省extendsextends子句,则该类为的子类。子

6、类可以继承父类中访问子句,则该类为的子类。子类可以继承父类中访问权限设定为权限设定为publicpublic、protectedprotected、defaultdefault的成员变量和方法。的成员变量和方法。但是不能继承访问权限为但是不能继承访问权限为privateprivate的成员变量和方法。的成员变量和方法。5.1.1 创建子类创建子类5.1.1 创建子类创建子类5.1.1 创建子类创建子类注意,注意,MammalClassMammalClass类拥有来自于类拥有来自于DogClassDogClass和和CatClassCatClass的相同的相同属性,包括了属性,包括了namena

7、me、eyeColoreyeColor、ageage等。现在我们可以利用等。现在我们可以利用继承重写继承重写DogClassDogClass和和CatClassCatClass。public class DogClass public class DogClass extends extends MammalClass MammalClass boolean hasTailboolean hasTail;/name,eyeColor,agename,eyeColor,age已经从父类继承已经从父类继承 public DogClass()/public DogClass()/隐式调用隐式调用su

8、per()super()name=Chase name=Chase;eyeColor=BlackeyeColor=Black;age=2;age=2;hasTail=true;hasTail=true;5.1.1 创建子类创建子类【例例5-15-1】继承的简单例子继承的简单例子class Father /class Father /父类父类private int money;private int money;float weight,height;float weight,height;String head;String head;String speak(String s)String

9、speak(String s)return s;return s;class Son extends Father /class Son extends Father /子类子类String hand,foot;String hand,foot;Weight,height,head,Speak();Hand,foot5.1.1 创建子类创建子类【例例5-15-1】继承的简单例子继承的简单例子public class TestExtend public class TestExtend public static void main(String args)public static void

10、main(String args)Son boy=new Son();Son boy=new Son();boy.weight=120f;boy.height=1.8f;boy.weight=120f;boy.height=1.8f;boy.head=boy.head=一个头一个头;boy.hand=;boy.hand=两只手两只手;boy.foot=boy.foot=两只脚两只脚;System.out.println(System.out.println(我是儿子我是儿子););System.out.println(System.out.println(我有我有:+boy.hand+:+bo

11、y.hand+、+boy.foot+boy.foot+、+boy.head+boy.head+、重、重+boy.weight+boy.weight+、高、高+boy.height);+boy.height);上面程序运行结果如下:上面程序运行结果如下:我是儿子我是儿子我有我有:两只手、两只脚、一个头、重两只手、两只脚、一个头、重120.0120.0、高、高1.81.85.1.1 创建子类创建子类 如果子类和父类不在同一个包中如果子类和父类不在同一个包中如果子类和父类不在同一个包中如果子类和父类不在同一个包中,那么那么那么那么,子类可以继承了子类可以继承了子类可以继承了子类可以继承了父类的父类的

12、父类的父类的protectedprotected、publicpublic修饰的成员变量做为子类的成员修饰的成员变量做为子类的成员修饰的成员变量做为子类的成员修饰的成员变量做为子类的成员变量变量变量变量,并且也可以继承了父类的并且也可以继承了父类的并且也可以继承了父类的并且也可以继承了父类的protectedprotected、public public 修饰的修饰的修饰的修饰的方法作为子类的方法。另外子类和父类不在同一个包中方法作为子类的方法。另外子类和父类不在同一个包中方法作为子类的方法。另外子类和父类不在同一个包中方法作为子类的方法。另外子类和父类不在同一个包中,则子则子则子则子类不能继

13、承父类的类不能继承父类的类不能继承父类的类不能继承父类的defaultdefault变量和变量和变量和变量和defaultdefault方法。方法。方法。方法。5.1.1 创建子类创建子类 【例5-2】继承不同包中的类的简单例子/HouseHold.javapackage xing.house;public class HouseHold /家类protected String address;/地址 public String surnname;/姓 String givenname;/名 public HouseHold(String add)address=add;protected S

14、tring getAddress()return address;void setMoney(String newadd)address=newadd;void setAddress(String add)address=add;5.1.1 创建子类创建子类 /Mikey.java:package xing.friend;import xing.house.HouseHold;public class Mikey extends HouseHold public Mikey()super(Star flight street 110);public static void main(Strin

15、g args)Mikey mikey=new Mikey();/mikey.givenname=“Johnson”;/非法 mikey.surnname=Math;/合法.mikey.address=Star flight street 110;/合法.String m=mikey.getAddress();/合法 /mikey.setAddress(Star flight street 110);/非法.System.out.println(mikey.surnname+:+m);5.1.1 创建子类创建子类 /Mikey.java:package xing.friend;import xi

16、ng.house.HouseHold;public class Mikey extends HouseHold public Mikey()super(Star flight street 110);public static void main(String args)Mikey mikey=new Mikey();/mikey.givenname=“Johnson”;/非法 mikey.surnname=Math;/合法.mikey.address=Star flight street 110;/合法.String m=mikey.getAddress();/合法 /mikey.setAd

17、dress(Star flight street 110);/非法.System.out.println(mikey.surnname+:+m);5.1.1 创建子类创建子类 程序编译和运行过程如下:5.1.2 5.1.2 成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写 当我们在子类中定义的成员变量和父类中的成员变量同名时,此时称子类的成员变量隐藏了父类的成员变量。当子类中定义了一个方法,并且这个方法的名字,返回类型,参数个数以及类型和父类的某个方法完全相同时,父类的这个方法将被隐藏,这时我们说重写了父类的方法。子类通过成员变量的隐藏和

18、方法的重写可以把父类的状态和行为改变为自身的状态和行为。5.1.2 5.1.2 成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写成员变量的隐藏和方法的重写 例如下面的这段程序就是这样的情况:class SuperClass /父类 int y;void setY()y=0;class SubClass extends SuperClass int y;/父类变量y被隐藏 void setY()/重写父类的方法setY()y=1;5.1.3 super 5.1.3 super 子类在隐藏了父类的成员变量或重写了父类的方法后,常常还要用到父类的成员变量,或在重写的方法

19、中使用父类中被重写的方法以简化代码的编写,这时就要访问父类的成员变量或调用父类的方法,Java中通过super来实现对父类成员的访问。我们知道,this用来引用当前对象,与this类似,super用来引用当前对象的父类。super的使用可以分为下面三种情况:1)用来访问父类被隐藏的成员变量,如:super.variable 2)用来调用父类中被重写的方法,如:super.Method(paramlist):3)用来调用父类的构造方法,如:super(paramlist);5.1.3 super 【例5-3】调用父类的构造方法的例子class A /类A public int n;/公共类型的成

20、员变量 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);Super的使用的使用n ninviteSuper.javainviteSuper.javan n class superClass class superC

21、lass n n int y;int y;n n superClass()superClass()n n y=30;y=30;n n System.out.println(in System.out.println(in superClass:y=+y);superClass:y=+y);n n n n void doPrint()void doPrint()n n System.out.println(In System.out.println(In superClass.doPrint();superClass.doPrint();n n n nclass subClass extends

22、 class subClass extends superClasssuperClassn n int y;int y;n n subClass()subClass()n n super();/super();/n n y=50;y=50;n n System.out.println(in System.out.println(in subClass:y=+y);subClass:y=+y);n n void doPrint()void doPrint()super.doPrint();/super.doPrint();/System.out.println(in System.out.pri

23、ntln(in subClass.doPrint();subClass.doPrint();System.out.println(super.y=+super.ySystem.out.println(super.y=+super.y+sub.y=+y);+sub.y=+y);public class inviteSuperpublic class inviteSuper public static void main(String args)public static void main(String args)subClass subSC=new subClass();subClass su

24、bSC=new subClass();subSC.doPrint();subSC.doPrint();对象的上转型对象 假设A 类是B 类的父类,class B extends A 当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中时,例如 A a;A a=new B();或 A a;B b=new B();a=b;称这个父类对象a,是子类对象b的上转型对象。例子例子class Aclass A int n;int n;public class B extends Apublic class B extends A public static void main(String arg

25、s)public static void main(String args)A a;A a;B b=new B();B b=new B();a=b;a=b;a.n=10;a.n=10;System.out.println(a.n);System.out.println(a.n);对象的上转型对象 对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能.上转型对象具有如下特点:1)上转型对象不能操作子类新增的成员变量和子类新增的方法。2)上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法。3)如果子类重写了父类的某个方法后,当对象的上转对象调用

26、这个方法时一定是调用了这个重写的方法,因为程序在运行时知道,这个上转对象的实体是子类创建的,只不过损失了一些功能而已。不要将父类创建的对象和子类对象的上转型对象相混淆。上转型对象在Java编程中是常见的。可以将对象的上转型对象再强制转换到一个子类对象可以将对象的上转型对象再强制转换到一个子类对象,这时这时,该子类对象又具备了子类所给的所有属性和功能。该子类对象又具备了子类所给的所有属性和功能。对象的上转型对象 【例5-5】上转型对象的使用class Mammal /哺乳动物类 private int n=40;void crySpeak(String s)System.out.println(

27、s);public class Monkey extends Mammal /猴子类 void computercomputer(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);

28、Monkey monkey=(Monkey)mammal;/把上转型对象强制转化为子类的对象puter(10,10);对象的上转型对象 上述程序的运行结果为:*I 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

29、);/因为computer方法是子类新增的方法。第第5章章 面向对象高级程序设计面向对象高级程序设计5.1 5.1 继承继承继承继承 5.25.2多态性多态性多态性多态性5.3 5.3 抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法5.45.4接口接口接口接口5.55.5内部类和匿名类内部类和匿名类内部类和匿名类内部类和匿名类5.2多态性多态性 多态多态(Polymorphism)(Polymorphism)的意思就是用相同的名字来定义不的意思就是用相同的名字来定义不同的方法。在同的方法。在JavaJava中,普通类型的多态为重载,这就意味着中,普通类型的多态为重载,这就意味

30、着可以使几个不同的方法使用相同的名字,这些方法以参数的可以使几个不同的方法使用相同的名字,这些方法以参数的个数不同、参数的类型不同等方面来进行区分,以使得编译个数不同、参数的类型不同等方面来进行区分,以使得编译器能够进行识别。器能够进行识别。也可以这样讲,重载是同一个方法具有不同的版本,每也可以这样讲,重载是同一个方法具有不同的版本,每个版本之间在参数特征方面有差异。重载是个版本之间在参数特征方面有差异。重载是JavaJava实现多态性实现多态性的方式之一。的方式之一。例如:例如:family()family()方法可以有三个版本,如下:方法可以有三个版本,如下:family()family(

31、)family(String ch)address=ch;family(String ch)address=ch;family(String ch,float n)address=ch;pay=n;family(String ch,float n)address=ch;pay=n;这些方法并存于程序中,编译时,编译器根据实参的类这些方法并存于程序中,编译时,编译器根据实参的类型和个数来区分从而调用那个方法。如果这些方法作为函数型和个数来区分从而调用那个方法。如果这些方法作为函数或过程同时出现在其它语言的程序中,如或过程同时出现在其它语言的程序中,如C C,那将导致灾难,那将导致灾难性的错误。性

32、的错误。5.2多态性多态性【例例例例5-65-6】构造方法重载的例子构造方法重载的例子class person class person String name=Johnson;/String name=Johnson;/姓名姓名 int age=45;/int age=45;/年龄年龄 person()person()person(String a)name=a;person(String a)name=a;person(String a,int b)name=a;age=b;person(String a,int b)name=a;age=b;public voiddisplay()Sys

33、tem.out.println(Name=+public voiddisplay()System.out.println(Name=+name+,+Age=+age);name+,+Age=+age);public class Polypublic class Poly public static void main(String args)public static void main(String args)person ko1=new person();person ko1=new person();person ko2=new person(Mike);person ko2=new p

34、erson(Mike);person ko3=new person(Willian,50);person ko3=new person(Willian,50);ko1.display();ko2.display();ko3.display();ko1.display();ko2.display();ko3.display();5.2多态性多态性 在Java语言中,多态性主要体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态),如下:1)编译时多态在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。2)运行时多态由于子

35、类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。如果子类重写了父类的方法,那么重写方法的调用原则如下:Java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。另外,方法重写时应遵循的原则如下:改写后的方法不能比被重写的方法有更严格的访问权限。改写后的方法不能比被重写的方法有更严格的访问权限。改写后的方法不能比被重写的方法产生更多的异

36、常改写后的方法不能比被重写的方法产生更多的异常。进行方法重写时必须遵从这两个原则,否则编译器会指出程序出错。5.2多态性多态性【例5-7】方法重写的例子class 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 p

37、l=new Parent();Parent p2=new Child();p1.function();p2.function();5.2多态性多态性编译过程如下:D:userchap05Javac RTpolyTest.javaRTpolyTest.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 sy

38、mbolsymbol :variable p1location:class RTpolyTest p1.function();2 errors可以看出,该程序中实例p2调用function()方法时会导致访问权限的冲突。第第5章章 面向对象高级程序设计面向对象高级程序设计5.1 5.1 继承继承继承继承 5.25.2多态性多态性多态性多态性5.3 5.3 抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法5.45.4接口接口接口接口5.55.5内部类和匿名类内部类和匿名类内部类和匿名类内部类和匿名类5.3 抽象类和抽象方法抽象类和抽象方法 Java语言中,用abstract关键字

39、来修饰一个类时,这个类叫做抽象类。一个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方法必须被重写。5.3 抽象类和抽象方法抽象类和抽象方法 当一个类的定义完全

40、表示抽象的概念时,它不应该被实例化为一个对象。例如Java中的Number类就是一个抽象类,它只表示数字这一抽象概念,只有当它作为整数类Integer或实数类Float等的父类时才有意义。定义一个抽象类的格式如下:abstract class abstractClass 由于抽象类不能被实例化,因此下面的语句会产生编译错误:new abstractClass();抽象类中可以包含抽象方法,为所有子类定义一个统一的接口,对抽象方法只需声明,而不需实现,因此它没有方法体。其格式如下:abstrac returnType abstractMethod(paramlist);使用abstract的另一

41、例子abstract class AA abstract void callme();void metoo()System.out.println(InsideAs metoo()method);class BB extends AA void callme()System.out.println(Inside Bs callme()method);public class AAbstract public static void main(String args)AA cc=new BB();/cc为上转型对象 cc.callme();cc.metoo();第第5章章 面向对象高级程序设计面

42、向对象高级程序设计5.1 5.1 继承继承继承继承 5.25.2多态性多态性多态性多态性5.3 5.3 抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法5.45.4接口接口接口接口5.55.5内部类和匿名类内部类和匿名类内部类和匿名类内部类和匿名类5.4 接口接口接口声明接口声明接口声明接口声明使用接口的优点使用接口的优点使用接口的优点使用接口的优点接口声明接口声明从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。通过接口使得处于不同层次,甚至互不相关的类可以具有相同的行为。接口其实就是方法定义和常量值的集合。它的优点主要体现在下面

43、几个方面:(1)通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。(2)通过接口可以指明多个类需要实现的方法。(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。接口把方法的定义和类的层次区分开来,通过它可以在运行时动态地定位所调用的方法。同时接口中可以实现“多重继承”,且一个类可以实现多个接口。正是这些机制使得接口提供了比多重继承(如C+等语言)更简单、更灵活、而且更强劲的功能。接口声明接口声明 Java 不支持多继承性,即一个类只能有一个父类。单继承性使得Java类层次简单,易于程序的管理。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。使

44、用关键字interface 来定义一个接口。接口的定义和类的定义很相似,分为接口声明和接口体两部分。1、接口声明接口声明我们曾使用class关键字来声明类,接口通过使用关键自interface 来声明.完整的接口定义格式如下:public interface interfaceName extends listOfSuperInterface其中public修饰符指明任意类均可以使用这个接口,缺省情况下,只有与该接口定义在同一个包中的类才可以访问这个接口。extends子句与类声明中的extends子句基本相同,不同的是一个接口可以有多个父接口,用逗号隔开,而一个类只能有一个父类。子接口继承父

45、接口中所有的常量和方法。通常接口名称以able或ible结尾,表明接口能完成一定的行为,例如Runnable、Serializable。接口声明接口声明2、接口体接口体接口体中包含常量定义和方法定义两部分。其中常量定义部分定义的常量均具有public、static和final属性。其格式如下:returnType methodName(paramlist);接口中只能进行方法的声明,而不提供方法的实现,所以,方法定义没有方法体,且用分号(;)结尾,在接口中声明的方法具有public和abstract属性。另外,如果在子接口中定义了和父接口同名的常量,则父接口中的常量被隐藏。例如:interfa

46、ce Summaryable final int MAX=50;/MAX具有public、static、final属性void printone(float x);float sum(float x,float y);上面这段程序可以以Summaryable.java来保存,也可以写入其它Java程序中。接口声明接口声明3、接口的使用一个类通过使用关键字implements 声明自己使用(或实现)一个或多个接口。如果使用多个接口,用逗号隔开接口名。如 class Calculate extends Computer implements Summary,Substractable类Calcul

47、ate使用了Summary 和Substractable接口,继承了Computer类。如果一个类使用了某个接口,那么这个类必须实现该接口的所有方法,即为这些方法提供方法体。需要注意的如下:1)在类中实现接口的方法时,方法的名字,返回类型,参数个数及类型必须与接口中的完全一致。2)接口中的方法被默认是public,所以类在实现接口方法时,一定要用public 来修饰。3)另外,如果接口的方法的返回类型如果不是void 的,那么在类中实现该接口方法时,方法体至少要有一个return 语句。如果是void 型,类体除了两个大括号外,也可以没有任何语句.使用接口的优点【例例5-9】使用多重接口的例子

48、/MultInterfaces.javainterface I1 abstract void test(int i);interface I2 abstract void test(String s);public class MultInterfaces implements I1,I2 public void test(int i)System.out.println(In MultInterfaces.I1.test);public void test(String s)System.out.println(In MultInterfaces.I2.test);public static

49、 void main(String a)MultInterfaces t=new MultInterfaces();t.test(42);t.test(Hello);第第5章章 面向对象高级程序设计面向对象高级程序设计5.1 5.1 继承继承继承继承 5.25.2多态性多态性多态性多态性5.3 5.3 抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法抽象类和抽象方法5.45.4接口接口接口接口5.55.5内部类和匿名类内部类和匿名类内部类和匿名类内部类和匿名类5.5内部类和匿名类内部类和匿名类5.5.1 5.5.1 内部类的定义内部类的定义内部类的定义内部类的定义5.5.2 5.5.2 内部类

50、特性内部类特性内部类特性内部类特性5.5.3 5.5.3 匿名类匿名类匿名类匿名类5.5.1 内部类的定义内部类的定义 简单地说,一个类被嵌套定义于另一个类中,称为嵌套类。在大多数情况下,嵌套类(静态的嵌套类除外)就是内部类(inner class)。包含内部类的类称为外部类。与一般的类相同,内部类具有自己的成员变量和成员方法。通过建立内部类的对象,可以存取其成员变量和调用其成员方法。例如下面的例子:pubic class GroupOne int count;/外部类的成员变量 public class Student /声明内部类声明内部类 String name;/内部类的成员变量内部类

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

当前位置:首页 > 教育专区 > 大学资料

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

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