(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 多态的实际意义
多态的实际意义在于屏蔽不同子类的差异性实现通用的编程,从而带来不同的结果。
(1)访问控制 (2)final关键字 (3)对象创建的过程 (4)多态的更多相关文章
- Java对象创建的过程及对象的内存布局与访问定位
这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等. 1.对象创建的过程 1.类加载.解析.初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符 ...
- 深入学习Java对象创建的过程:类的初始化与实例化
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完 ...
- JAVA对象创建的过程
Java中一个实例对象被创建的过程 一.类的加载过程 首先,Jvm在执行时,遇到一个新的类时,会到内存中的方法区去找class的信息,如果找到就直接拿来用,如果没有找到,就会去将类文件加载到方法区.在 ...
- 内存管理运算符new delete与内存管理函数malloc free的区别——已经他们对对象创建的过程。
(1)内存管理函数与内存管理运算符的区别 内存管理函数有内存分配函数,malloc calloc realloc 以及内存释放函数free. 内存管理运算符有new 和delete. 两种内存管理方式 ...
- Java内部类与final关键字详解
一.内部类的几种创建方法: 1.成员内部类 class Outer{ private int i = 1; class Inner{ public void fun() {System.out.pri ...
- 深入理解JVM(2)——揭开HotSpot对象创建的奥秘
一.对象创建的过程:当虚拟机遇到一条含有New的指令时,会进行一系列对象创建的操作. 检查常量池中是否含有带创建对象所属类的符号引用 a) 如果含有的话,直接进行下一步 b) 如果常量池中没有这个符号 ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- Java基础super关键字、final关键字、static关键字、匿名对象整理
super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...
- JAVA面对对象(三)——Super、static、final关键字
Super 使用super关键字可以直接调用父类中的构造方法.属性.普通方法 super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行 public class P ...
随机推荐
- spring AOP 之四:@AspectJ切入点标识符语法详解
@AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ...
- ASPxComboBox 自带输入法确定之后再搜索解决方法
<dx:ASPxComboBox ID="comChargeSubject_FixedFee" ClientInstanceName="comChargeSubje ...
- 【手记】解决VS2010宏功能报错
抱歉问题解决前没留截图,总之就是使用宏相关的功能都打不开,会弹窗报错,英文,大意是[一个或多个组件不存在,请尝试重装]. 尝试过: 修复安装VS2010 按此文照做:https://visualstu ...
- WebApi使用swagger ui自动生成接口文档
之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...
- 深复制与浅复制&&strong,copy修饰符总结
又是一个老生常谈的话题,可是貌似这个问题,好多ios开发工程师并不能理解透彻,所以简单记录分析一下深复制与浅复制的原理以及strong,copy修饰符的原理和使用. 一.深复制与浅复制 ...
- Java Singleton(单例模式) 实现详解
什么是单例模式? Intend:Ensure a class only has one instance, and provide a global point of access to it. 目标 ...
- JVM之---垃圾回收
JVM通过GC来回收堆和方法区中的内存,GC的基本原理首先会找到程序中不再被使用的对象,然后回收这些对象所占用的内存. 1.收集器 通常采用收集器的方式实现GC,主要的收集器有引用计数收集器和跟踪收集 ...
- 【java基础】 == 和 equals() 的区别
==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系呢? 首先,==号在比较基本数据类型(指的值类型)时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值: int x ...
- Python Django migrate 报错解决办法
1. 在现有基础上又添加一个表的时候migrate报错 migrate报错django.db.utils.OperationalError: (1050, "Table 'cmdb_eidc ...
- python学习之老男孩python全栈第九期_数据库day001 -- 作业
创建如图所示数据库: 创建过程: 查看数据库,创建数据库 db1,再查看一下数据库 进入数据库,查看一下表 接着再创建一个class表 发现增加了重复数据,因此要把第二个修改一下 修改完数据之 ...