- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章-继承、多态与接口-Copy重点讲义
注意: 在类中实现接口所定义的方法时,方法的声明必须与接口中所定义的完全一致。 在类中实现接口所定义的方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。 抽象类可以不实现接口的抽象方法,而非抽象类必须实现接口中的所有方法。 其他 final关键字 final在类之前 表示该类是最终类,不能再被继承。 由于安全性的原因或者是面向对象的设计上的考虑,有时候希望一些类不能被继承,例如,Java中的String类,它对编译器和解释器的正常运行有很重要的作用,不能轻易改变它,因此把它修饰为final类,使它不能被继承,这就保证了String类型的唯一性。 final在方法之前 表示该方法是最终方法,用final修饰的方法不能再被子类重写;该方法不能被任何派生的子类覆盖。 final在变量之前 表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。 实例成员和类成员 Java类包括两种类型的成员:实例成员和类成员。 除非特别指定,定义在类中的成员一般都是实例成员。 【例】实例成员举例 class AnIntergerNamedX{ int x; public int x(){ return x; } public void setX(int newX){ x=newX; } } 声明了实例变量之后,当每次创建类的一个新对象时,系统就会为该对象的所有成员创建实例变量的副本,然后就可以通过对象访问这些实例变量。 实例方法是对当前对象实例变量进行操作的,而且可以访问类变量。 static 在变量或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。 类成员用static修饰符声明,格式如下: static type classVar; static return Type classMethod([paramlist]){ …… } 分别声明了类变量和类方法。 类变量 类变量用static修饰符声明。 系统只为每个类分配类变量,而不管类创建的对象有多少。当第一次调用类的时候,系统为该类变量分配内存,所有的对象共享了该类的类变量。因此,可以通过类本身或者某个对象来访问该类变量。 【例】类变量举例 class AnIntergerNamedX{ static int x; public int x(){ return x; } public void setX(int newX){ x=newX; } } 输出的两个变量结果相同,这是因为x是一个类变量,因此,就只有该类变量的唯一副本,它被该类的所有对象所共享,包括myX和anotherX。当在任一对象中调用setX的时候,也就改变了该类所有对象所共享的值。 结果输出为: myX.x=2 anotherX.x=2 类方法 为了指定方法为一个类方法,可以在方法声明的地方使用static关键字。 类方法只能操作类变量而不能直接访问在类中定义的实例变量,除非这些类方法创建了一个新的对象,并通过对象访问它们。 类方法可以在类中被调用,不必通过一个实例来调用一个类方法。 Java程序的入口方法main()就是一个类方法。 【例】不正确的引用 class AnIntergerNamedX{ int x; static public int x(){ return x; } static public void setX(int newX){ x=newX; } } 当编译这个类时,就会出错。原因是类方法不能访问实例变量。 static 解决方法: 1.将变量变成类变量; 2.创建一个类的对象,并且通过该对象来访问变量。 同一个类的实例方法可以访问该类的类变量和类方法; 而类方法只能访问该类的类变量和类方法,不能直接访问实例的变量和方法。 THE END * 抽象类不能用new运算创建对象,必须产生子类,由子类创建对象; 如果某个类是一个抽象类的子类,它必须具体实现父类的抽象方法; 如果某个类中含有抽象方法,那么这个类必须用abstract来修饰(抽象类也可以没有抽象方法); 抽象类只关心其子类是否具备某种功能,不关心功能的具体实现,功能的具体行为由子类负责实现; 抽象类不能同时为最终类,其位置位于访问控制修饰符后面 第6章 继承、多态与接口 本章学习目标: 理解继承与多态的概念和实现机制 利用继承与多态设计复杂的类 掌握抽象类和接口的实现 当一个类拥有另一个类的数据和操作时,就称这两个类之间具有继承关系,被继承的类称为父类或超类,继承的类称为子类。 一
原创力文档


文档评论(0)