- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
理解调用一个对象方法的机制是非常重要的。首先,编译器检查对象的声明类型和方法名。接着检查方法调用中参数类型。将一个方法调用同一个方法主体关联起来就称为“绑定(binding)”。 若在程序运行以前执行绑定(由编译器和链接程序实现,如果有的话),就叫做“早期绑定”。 “后期绑定”意味着绑定在运行期间进行,以对象的类型为基础。后期绑定也叫做“动态绑定”或“运行时绑定”。 * Java中绑定的所有方法都采用后期绑定技术,除非一个方法已经被声明为final。 动态绑定是指“在执行期间(而非编译期间)”判断所引用对象的实际类型,根据实际的类型调用其相应的方法,它是非常重要的特性,可使程序变得可扩展而无需重编译已存在代码。 动态绑定工作机制:向上寻索 * Java提供的访问权限修饰符有四个,即public、private、protected和默认。 * 一般类(区别于内部类)只有2个访问权限控制:public和默认。 public class PrimNumber { //…… } class People { //…… } 需要注意的是:同一个 .java文件中 可以有一个或多个类(或接口), 最多只能有一个类(或接口)是public的。 类被定义成public的,就可以被所有其他的类访问。 类被定义成默认的,就只能被同一个包中类的类访问。 类的成员包括有:成员变量、方法、内部类等。它们有上述的4个访问权限控制。 修饰符要置于每个类成员的定义之前,且仅能控制它所修饰的那个成员。 注意:这里所言仅为访问,而不是使用。不管在任何情况下,实例成员都要通过对象调用,static成员通过类名调用(规范)。 注意:类被定义成public的,并不代表类中的成员也是public的。 * 修饰符 本类 同一包内 不同包子类 不同包且无继承 public √ √ √ √ protected √ √ √ ? 默认 √ √ ? ? private √ ? ? ? * * * 类方法不仅可以被该类创建的任何对象调用执行,也可以直接通过类名调用。 JAVA规定: 类方法中出现的成员变量必须是类变量。 所以类方法中不能操作实例成员变量这是因为: 在类创建对象之前,实例成员变量还没有分配内存; 类方法中可不能直接调用其它实例方法,这是因为在类创建对象前,实例方法还没有分配入口地址。 当声明一个成员变量时,有static标识的是类成员变量,没有的是实例成员变量。例如, class Takecare { static int x; //类成员变量 int y; //实例成员变量 } 构造方法是类中一种特殊方法,用于创建类的实例并初始化对象。 JAVA规定,构造方法的名字必须与它所在类的类名完全相同。 构造函数的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。 * 构造方法定义的格式如下: [访问控制符] 构造方法名( [参数列表] ) { //一般定义对成员变量的初始化 } 其中,访问控制符可以是public 、protected、private、默认(不写)。 * 注意: 1.构造方法无返回类型。 2.构造方法只能被new运算符调用。 new 构造方法名( [参数列表] ); * 如果类中没有构造方法,系统会提供默认的构造方法 ; 如果类中定义了一个或多个构造方法,那么Java不再提供默认构造方法。 默认的构造方法无参数,方法体当中也不执行具体操作,形式如下, 构造方法名() { } * 见代码清单3-8 * 强调两点: 一旦定义了构造函数,Java就不能再调用系统缺省构造函数; 当有多个构造函数时,通过构造函数参数的类型和个数来决定调用哪个。 * 多态性提供了类中方法执行的多样性,它有两种表现形式:重载(overload)和重写(override)。 * 一个类中,如果有许多同名的方法带有不同的参数列表,称为方法的重载(overload)。 方法的重载必须满足以下条件: (1)在同一个类当中定义的方法; (2)方法名必须相同; (3)参数列表必须不同(参数类型、参数个数)。 注意,仅仅返回类型的不同或访问控制权限不同,不能构成重载。 代码清单3-9 * 构造函数也能够重载。 代码清单3-12 * 重载是编译时多态性,即在编译时就能够确定对象调用的是同名方法中哪一个。依据正是实参的类型与个数。 但要避免重载出现歧义。 继承是一种由已有的类创建新类的机制。利用继承,可以使子类得到父类的某些成员。 继承是实现软件可重用性的一种重要方式,继承增强了软件的可扩充性,提高了软件的可维护性。 JAVA中类的继承是
文档评论(0)