第七章-继承封装多态.doc_第1页
第七章-继承封装多态.doc_第2页
第七章-继承封装多态.doc_第3页
第七章-继承封装多态.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章 封装、继承、多态封装的概念什么是封装 在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的好处现实中给你一张信用卡,但实际我们拿到的只是一张卡片,不会看到密码。提高一个物体内部组成部分的安全性可以向外部屏蔽一个物体内部组成部分的差异public class TestEncapsulation1()public static void main(String agrs)CreditCard card = new CreditCard();System.out.println(card.password);class CreditCardString password = “123456”;double money = 100.0;封装的三要素保护实例变量 private建立public的访问器方法(getter读取器/setter设置器)对于方法使用JavaBean命名规范 get set getPassword(); setPassword();属性封装方法根据需要封装方法声明公开,方法实现封装doubleValue(2);public static int doubleValue(int value)/return value*2;return value2;继承类与类之间的关系“HAS-A” 关系“IS-A” 关系USED-A 关系CatDogAnimal什么是继承将类的共性进行抽象形成的类(父类、超类)提高代码的复用性extendsextendsextends关键字Dog d = new Dog();d.eat();d.sleep();System.out.println(d.age);JAVA中继承的特点java中的继承是单继承java中单继承的好处 简单、继承关系在内存中的表现形式Dog类extends Animal类new Dog();分配空间(父类对象空间,子类对象空间)递归的构造父类对象初始化属性调用构造方法java中的访问修饰符什么是java中的访问修饰符public /不论包内、包外、或继承都可以访问private /只能在自己类的范围内被访问。protected /在同一个包里的可以访问(=default),在包外的子类可以基于继承访问default /不能被包外的类访问两个不同的访问问题一个类中的方法代码是否能够访问另一个类的成员 /能一个子类是否能够继承其父类的成员java作用域public,private,protected及不写时的区别 在说明这四个关键字之前,我想就class之间的关系做一个简单的定义:对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。1、public:对所有用户开放,所有用户都可直接调用2、private:私有。除了class自己之外,任何人都不可直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可使用。3、protected:对于子女、朋友来说,就是public的,可自由使用,无任何限制;而对于其他的外部class,protected就变成private。(同一个包中的类,若不在同一个包中,必须为其子孙类才可使用)4、默认:默认可以称为friendly,但是java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c+。默认的访问权限是包级访问权限。补充说明: 1.每个编译单元(类文件)都仅能有一个public class 2.public class的名称(包含大小写)必须和其类文件同名。 3.一个类文件(*.java)中可以不存在public class。 如果我们在某个包内撰写一个class,仅仅是为了配合同一包内的其他类工作,并且我们不想再为了撰写说明文档给客户(不一定是现实意义的客户,可能是调 用这个类的类)看而伤脑筋;或者有可能过一段时间之后会彻底改变原有的做法,并以全新的版本代替旧版本,这种情况下一般会默认。 4、class不可以是private和protected。子类的扩展方法的覆盖子类覆盖方法的访问修饰符范围必须大于或者等于父类对应方法的访问修饰符范围super关键字每一个子类的构造方法在没有显示调用super()系统都会提供一个默认的super()super() 书写在第一行可以在子类构造方法中显示调用super(),完成对特定父类构造方法的调用多态什么是多态Dog d = new Dog();Animal a = new Dog(); /一个客观存在的Dog对象看做一个Animal(父类)。通过父类型的引用指向子类型的对象多态的特点对象类型不可变,引用类型可变只能调用引用其引用类型中定义的方法 / Animal a = new Dog(); a只能调用Animal中定义的方法,不能调用Dog中的方法运行时会运行子类覆盖的方法强制类型转换Animal a = new Dog(); Dog d = a; /错误 dog d = (Dog)a; /正确java.lang.ClassCastException /强制类型转换异常instanceof运算符 它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据if(a instanceof Dog)Dog d = (Dog)a;多态的作用提高代码的通用性 Dog d = new Dog(); d.sleep(); d.eat(); Animal a = new Dog();a.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论