首页 > (1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

(1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态

1.访问控制(笔试题)

1.1 常用的访问控制符

public - 公有的

protected - 保护的

啥也不写 - 默认的

private - 私有的

1.2 访问控制符的比较

访问控制符 访问权限 本类 本包中的类 子类 其他包的类

---------------------------------------------------------------------------

public 公有的 ok ok ok ok

protected 保护的 ok ok ok no

啥也不写 默认的 ok ok no no

private 私有的 ok no no no

要求大家掌握的内容:

a.public修饰的内容表示可以在任意位置使用;

b.private修饰的内容只能在本类内部使用;

c.通常情况下,成员变量都用private修饰,成员方法都用public修饰;

1.3 包的定义

package 包名;

package 包名1.包名2...包名n;



定义包的主要目的就是为了便于文件的管理以及区分同名的文件。

2.final关键字(重点)

2.1 基本概念

final本意为"最终的,不可更改的",该关键字可以修饰类、成员方法以及成员变量。

2.2 使用方式

final关键字修饰类体现在不能被继承;

- 为了防止滥用继承,如:String类、System类等。

final关键字修饰成员方法体现在不能被重写;

- 为了防止不经意间造成方法的重写,如:SimpleDateFormat类中的format()方法。

final关键字修饰成员变量体现在该成员变量必须初始化而且不能更改;

- 为了防止不经意间造成数值的改变,如:Thread.MAX_PRIORITY等

扩展:

在以后的编程中单独使用static或final关键字修饰变量的场合很少,通常都是使用public static final共同修饰该变量来表达常量的含义,常量的命名规则是:所有字母都大写,不同单词之间采用下划线连接。

如:

public static final double PI = 3.14;

3.对象创建的过程(了解)

3.1 单个对象创建的执行过程

(1)当创建对象时会在堆区中申请内存空间,采用默认初始化的方式来处理成员变量;

(2)采用显式初始化来进行成员变量的处理;

(3)执行构造块中的代码,可以给成员变量再次赋值;

(4)执行构造方法体中的代码,此时对象构造完毕;

3.2 子类对象创建的执行过程

(1)当创建子类对象时会在堆区中申请内存空间;

(2)先加载父类再加载子类,因此先执行父类的静态语句块,再执行子类的静态语句块;

(3)先执行父类的构造块,再执行父类的构造方法体,此时父类部分构造完毕;

(4)先执行子类的构造块,再执行子类的构造方法体,此时子类对象构造完毕;

4.多态(重中之重)

4.1 基本概念

多态主要指同一种事物表现出来的多种形态。

饮料:可乐、雪碧、加多宝、乐虎、红牛、... ...

宠物:猫、狗、鸟、鱼、小强、...

整数:byte b = 10; short s = 10; int i = 10; ...

... ...

4.2 语法格式

父类类型 引用变量名 = new 子类类型();

如:

Pet pc = new Cat();

pc.show();

解析:

在编译阶段调用Pet类中的show()方法,在运行阶段调用Cat类中重写以后的show()方法。

4.3 注意事项

(1)使用父类的引用指向子类的对象时,父类的引用可以直接调用父类中的成员方法;

(2)使用父类的引用指向子类的对象时,父类的引用不可以直接调用子类中的成员方法;

(3)对于非静态的成员方法来说,编译阶段调用父类版本,运行阶段调用子类版本;

(4)对于静态的成员方法来说,编译和运行阶段调用父类版本,与对象无关;

4.4 引用数据类型之间的转换

(1)引用数据类型之间的转换分为两种:自动类型转换 和 强制类型转换;

其中子类类型向父类类型的转换发生自动类型转换;

其中父类类型向子类类型的转换需要强制类型转换;

(2)引用数据类型之间的转换必须发生在父子类之间,否则编译报错;

(3)当转换的子类类型并不是该引用真正指向的子类类型时,编译阶段通过,运行阶段

发生类型转换异常;

(4)为了避免上述错误的发生,建议每次强制类型转换之前使用以下格式进行判断:

if(引用变量名 instanceof 目标类型){}

- 判断引用变量名真正指向的对象是否为目标类型,若是则返回true,否则返回false

4.5 多态的实际意义

多态的实际意义在于屏蔽不同子类的差异性实现通用的编程,从而带来不同的结果。

转载于:https://www.cnblogs.com/sumboy/p/8604169.html

更多相关:

  • Python 与 ABC 的一个重要区别在于其类型系统。ABC 采用静态类型,编译器会检查程序中的变量类型是否保持一致,如果不一致,程序就无法运行。并且,ABC与当时大多数静态语言不同,采用的是类型推导(和 Haskell 一样),而不是类型声明(比如 C 语言)。而 Python 采用动态类型,所有类型检查都是在程序运行过程中,而不...

  • python是计算机二级考试的科目之一,并没有级别的划分。其考试目标是测试考生掌握Python语言知识的程度和对Python语言的编程能力、调试能力和综合应用能力,在当下的应用中是十分重要的。 什么是python Python语言是一种解释运行、面向对象、扩展性强的程序设计语言,是大学生学习计算机编程能力、理解计算机解决问题的方法的...

  • 正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1)空指针所对应的是指指向的对象为空的指针。            不经发问,什么叫指向为空呢?要理解这点,必须理解如下几点(有点啰嗦,但...

  • 一、reponseType 1、什么是reponseType XMLHttpRequest.reponseType属性是一个枚举类型的属性,返回响应数据的类型,他允许我们手动的设置 返回数据的类型。如果我们将它设置为一个空字符串,它将默认的使用"text"类型。 当将reponseType设置为一个特定的类型的时候需要确保服务...

  • SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。INTEGER一个变量虽然定义为整型,但也有多种形式。有些整型变量没有范围限制,有些整型变量定义为特定的数值(例如,IP的转发标志就只有允许转发时的或者不允许转发时的这两种),有些整型变量定义一个特定的范围(例如,UDP和TCP的端口号...

  • 假如 父类 int num =7;子类 int num =9;父类是否会被子类所覆盖? 给你看两个例子: 第一个例子:   第二个例子:   这两个例子的区别只有一句话   由此证明了子类从父类继承的时候  如果有同名的成员变量 默认情况下 父类的成员变量是被屏蔽的   如果你非要调用父类的成员变量  请使用super关键字 转...

  • 继承 一,概述 a)         使用extends关键字可以让一个类继承另一个类,继承的类为子类,被继承的类是父类,子类会自动继承父类的所有方法和属性。 b)        继承使得类和类之间产生了关系 c)        子类可以使用super调用父类成员 d)        继承的最终目的就是提高代码的复用性。 e)&nb...