Java封装、继承、多态

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

抽象和封装

1.为什么使用面向对象

面向对象就是采用“现实模拟”的方法设计和开发程序。

面向对象实现了虚拟世界和现实世界的一致性,符合人们的思维习惯,使得客户和软件设计开发人员之间,软件设计开发人员内部交流更加顺畅,同时还带来了代码重用性高、可靠性高等优点,大大提高了软件尤其是大型软件的设计和开发效率

2.使用面向对象进行设计

面向对象设计的过程就是抽象的过程。

根据业务相关的属性和行为,忽略不必要的属性和行为,由现实世界中“对象”抽象出软件开发中的对象

第一步:发现类

第二步:发现类的属性

第三步:发现类的方法

类的基本结构,其主要由属性和行为组成,称为类的成员变量(或者成员属性)和成员方法,统称为类的成员(除此之外类的成员还包括构造方法,代码块等)

对象的创建:

通过够造方法来创建对象。

通过对象名.属性名的方式调用属性

通过对象名.方法名的方式调用方法

Static 可以用来修饰属性、方法和代码快。Static的变量属于这个类所有,即由这个

类创建的所有对象共同用一个 Static 变量。通常把Static修饰的属性和方法称为类

属性(类变量)、类方法。不使用Static修饰的属性和方法,属于单个对象,通常称为

实例属性(实例变量),实例方法。

类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问。Final 可以用来修饰属性、方法和类。用final修饰的变量称为常量,其值固定不变。

构造方法的名字和类名相同,没有返回值类型。构造方法的作用主要就是在创建对象时

执行一些初始化操作,如给成员属性赋初值。

在没有给类提供任何构造方法时,系统会提供一个无参的方法体为空的默认构造方法。一旦提供了自定义构造方法,系统将不会再提供这个默认的构造方法,如果要使用,必须手动添加。

如果一个类中包含了两个或两个以上方法,他们的方法名相同,方法参数个数或参数类型不同,则称该方法被重载了,这个过程称为方法重载,成员方法和构造方法都可以进行重载。

常见错误:

在类中可以定义Static变量,在方法里是否可以定义Static变量?

结论:在方法里不可以定义Static变量,也就是说类变量不能是局部变量。

给构造函数加上返回值类型会出现什么情况?

结论:构造方法没有返回值类型,如果有,就不是构造方法,而是和构造方法同名的成员变量。

4.用封装优化类

封装:将类的状态信息隐藏在类内不能,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值方法(setter)和取值方法(getter),用于对这些属性的存取;在赋值方法中加入对属性的存取控制语句。

封装的好处主要有:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。

封装时会用到多个权限控制符来修饰成员变量和方法,区别如下。

Private:成员变量和方法只能在类内被访问,具有类可见性

默认:成员变量和方法只能被同一个包里的类访问,具有包可见性。

Protected:可以被同一个包中的类访问,被同一个项目中不同包中的子类访问Public:可以被同一个项目中所有的类访问,具有项目可见性,这是最大的访问权限

第二章

继承

2.1 继承基础

1.在java中,继承通过extends关键字来实现,

2.父类又叫基类和超类。

3.修饰符如果是public,该类在整个项目中可见:不写Public修饰符则该类只在当前包中可见。

4.Java中只支持单继承,即每个类只能有一个直接父类。继承表达的是is a的关系,或者说是一种特殊和一般的关系。

5.所有的Java类都字节或间接地继承了ng.Object 类。

6.在java中子类可以从父类中继承到那些“财产”呢?

A)继承Public和protected修饰的属性和方法,不管子类和父类是否在同一个包里。

B)继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里。

C)无法继承private修饰的属性和方法。

D)无法继承父类的构造方法。

2.2 重写继承关系中的构造方法

1.在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖(overriding)。方法重新必须满足如下要求:

A)重写方法和被重新方法必须具有相同的方法名。

B)重写方法和被重写方法必须具有相同的参数列表。

C)重写方法的返回值类型必须和被重新方法的返回值类型相同或者是其子类。

D)重写方法的不能缩小被重写方法的访问权限。

2.在子类中通过“Super”关键字来调用父类的成员。

A)super必须是出现在子类中(子类的方法和构造方法中),而不是其他位置。

B)可以访问父类的成员,例如父类的属性,方法,构造方法

C)注意访问权限的限制,例如无法通过super访问private成员

3.继承关系中的构造方法调用的规则如下:

A)如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this 显示调用自身的其他构造方法,则系统会默认调用父类的无参构造方法,在这种情况下,写不写“super();“语句,效果都一样。

B)如果子类的构造方法中通过super显示调用父类的有参构造方法的,那将执行父类相应构造方法,而不执行父类的无参构造方法。

C)如果子类的构造方法中通过this 显示调用自身的其他构造方法,在相应的构造方法中应用以上两条规则。

相关文档
最新文档