JAVA面向对象程序设计基础知识--知识回顾与疑点解析教程.docxVIP

JAVA面向对象程序设计基础知识--知识回顾与疑点解析教程.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA面向对象程序设计基础知识--知识回顾与疑点解析教程

第四章 JAVA面向对象程序设计基础知识--知识回顾与疑点解析 4.1 面向对象的基本概念 4.1.1 面向对象编程的概念 封装,继承,多态是面向对象的三个特性。 封装:encapsulation 继承:inherit,Java只支持单继承,使用关键字extends 多态:polymorphic,多态分为静态多态(方法重载等)以及动态多态(方法重写等);父类中定义的属性或方法可以被子类继承之后具有不同的数据类型或者表现出不同的行文,同一个属性或方法在父类及其各个子类中可以具有不同的语义。 关于多态性描述的证明如下: 对于@Override注记标识的方法重写,必须与父类中的申明一模一样,包括返回值的类型 该测试表示@Override重写的方法必须与父类中的申明一模一样,但若无虽然无@Override注记,但是与父类中的函数名,函数参数个数,类型,对应顺序一样,则返回值也必须一模一样,此时,没有@Override也和有一模一样;此外如果其???他类型的重写,则必须不能使用@Override注记。 2)重写属性具有不同的数据类型 在该测试中,属性a被重写,父类中是int类型,但是在子类中则为String类型。 重写方法表现不同的行为 在该测试用例中,getA(String s)方法即是对getA()方法的重载。 4.2 类的定义 4.2.1 类的声明 [public|缺省即default] [abstract|final] class 类名 extends 父类 implements 借口列表。 说明:class的声明若是public的,则该类可以被所有的类(包括同一个包和不同包下的类)所引用;若是缺省的,则该类只能被同一个包下的类所访问;若类修饰是abstract的,则该类必须被继承而不是被new实例化一个对象;若该类的修饰符是final的,则该类必须不能被继承,即该类不能派生出子类。 4.2.2 类体的申明 类体在一对大括号中进行声明,包括属性和行为的声明,格式如下: { [public|protected|private|缺省即default] [static] [final] [transient] [volatile] 类型 变量名; [public|protected|private|缺省即default] [static] [final|abstract] [native] [synchronized] 返回类型 函数名(参数列表) [throws 异常列表] {函数体声明} } 说明: 对于属性声明: 如果是声明为public类型的,则任何包下的的任何类可以通过该类的实例访问该属性。 以上测试表明,package a中公共类A可以被package b中的类所import并创建A的实例,并且在package b中可以通过类A实例访问a的公共属性。 如果声明是为protected类型的,则同一包下的任何类均可通过该类的实例访问该属性;同一包的该类的子类讲继承自该类的protected继承为自己的protected成员;不同包的该类的子类将继承自该类的protected成员继承为自己的private成员。 protected类型的测试最为麻烦和复杂,测试截图如下: 在该测试中,package a 中的类A的子类AAA继承A的protected成员a为自己的protected属性a,所以在同一包下的Main方法中可以通过AAA实例的对象访问该成员,而在package b 中的A的子类BB将父类A中的protected属性继承为自己的private成员,因而在同一包下的类B中无法通过BB的实例访问其自己的private属性a。 如果声明是为private类型的,则该属性只能在该类中的方法中被访问,也就是说该类实例不能够通过点操作符访问。 这一点是最严格不过的了,我想应该就不必测试了。 如果声明为缺省类型的,则该属性可以在该包下的任何类中通过该类的实例进行访问。 作为最好的对照,在第一问的测试中,讲类A中a成员的public去掉(缺省)则,结果如下图所示: 结果表明,公共类A的default属性也只能被同一个包下的Main类所访问,而不能被package b下的B类所访问(尽管能够import并实例化公共类A)。 4)static将成员声明为类成员,即所有对象所共享的成员,但是只要一份,不需要依赖一对象而存在。final将成员声明为常亮,一个final类型的对象不能声明为volatile(我想这是因为volatile修饰的成员是因为易变性而需要保证内存可见性,而final类型成员不存在内容可见性问题);transient变量声明为短暂性的变量,用于不同对象的串行化功能。 5)通过对属性的声明的分析,可以得到如下结论: 对于一个类

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档