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 多态的实际意义
多态的实际意义在于屏蔽不同子类的差异性实现通用的编程,从而带来不同的结果。

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

  1. Java对象创建的过程及对象的内存布局与访问定位

    这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...

  2. 深入学习Java对象创建的过程:类的初始化与实例化

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完 ...

  3. JAVA对象创建的过程

    Java中一个实例对象被创建的过程 一.类的加载过程 首先,Jvm在执行时,遇到一个新的类时,会到内存中的方法区去找class的信息,如果找到就直接拿来用,如果没有找到,就会去将类文件加载到方法区.在 ...

  4. 内存管理运算符new delete与内存管理函数malloc free的区别——已经他们对对象创建的过程。

    (1)内存管理函数与内存管理运算符的区别 内存管理函数有内存分配函数,malloc calloc realloc 以及内存释放函数free. 内存管理运算符有new 和delete. 两种内存管理方式 ...

  5. Java内部类与final关键字详解

    一.内部类的几种创建方法: 1.成员内部类 class Outer{ private int i = 1; class Inner{ public void fun() {System.out.pri ...

  6. 深入理解JVM(2)——揭开HotSpot对象创建的奥秘

    一.对象创建的过程:当虚拟机遇到一条含有New的指令时,会进行一系列对象创建的操作. 检查常量池中是否含有带创建对象所属类的符号引用 a) 如果含有的话,直接进行下一步 b) 如果常量池中没有这个符号 ...

  7. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  8. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  9. JAVA面对对象(三)——Super、static、final关键字

    Super 使用super关键字可以直接调用父类中的构造方法.属性.普通方法 super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行 public class P ...

随机推荐

  1. Node.js之Express一

    前面也了解了HTTP模块,但它并不支持session.cookie等.Express是对HTTP模块的封装,同时也支持session这些,使用起来也更好用.Express更有点像IIS服务器.它也是属 ...

  2. C# UML类图及类之间的几种关系

    今天晚上看了大话设计模式中的UML类图这一节感觉受益匪浅,好多年不能理解的类之间的关系理解了. 一.UML类图的表示方法 1.类的表示方法 A类用一个矩形框分三层表示,第一层是类名,斜体类名表示抽象类 ...

  3. 【转】Cookie深度解析

    Cookie简介 众所周知,Web协议(也就是HTTP)是一个无状态的协议(HTTP1.0).一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义.用户在浏览器的地址栏输入页面的URL ...

  4. Es创建索引、设置和修改Mapping

    Http接口操作示例如下: 1.创建索引: 2.删除索引: 3.创建mapping: 4.查看mapping:

  5. cv程序员的日常_1

    某天pom文件粘贴报红 然后我就问我同事 然后我就百度 https://blog.csdn.net/guoyiyun_tz/article/details/82115024 看完之后…emmmm没错啊 ...

  6. ajax对服务器返回xml的处理过程

    客户端:<script type="text/javascript">    function getXml(){        var name = $(" ...

  7. 【学习笔记】--- 老男孩学Python,day14 python内置函数大全

    参考:  https://www.cnblogs.com/pyyu/p/6702896.html http://www.runoob.com/python3/python3-built-in-func ...

  8. python3中的新式类mro查看和C3算法原理

    两个公式 L(object) = [object] L(子类(父类1, 父类2)) = [子类] + merge(L(父类1), L(父类2) , [父类1, 父类2])注意 + 代表合并列表 mer ...

  9. maven 安装下载与配置 代理设置 《解决下载慢问题》

    maven:下载地址http://mirror.bit.edu.cn/apache/maven/maven-3/ 解压之后配置环境 %maven_home%  d:\*****path 中添加 %ma ...

  10. python之切片

    1.为什么要学习切片[切片是解决何种问题的?] (2)对于含有元素很少的list,我们遍历其前三个元素,通常可以这样来实现: #遍历list,取其中索引为[0].[1].[2]的元素: L = ['X ...