(1)封装 (2)static关键字 (3)继承
1.封装(重中之重)
1.1 基本概念
通常情况下,可以在测试类中给成员变量进行赋值,当给定的数值合法但不合理时,无论是编译还是运行阶段都不会报错或给出提示,此时与现实生活不符。
为了避免上述问题的发生,就需要对成员变量进行密封包装处理,该技术就叫封装,换句话说,封装就是一种保证成员变量值合理性的机制。
1.2 封装的流程
(1)私有化成员变量,使用private关键字修饰;
(2)提供公有的get成员变量和set成员变量方法,并在方法体中进行合理值的判断;
(3)在构造方法中调用set成员变量的方法来进行判断;
2.static关键字(重点)
2.1 基本概念
通常情况下,成员变量都隶属于对象层级,也就是每个对象在堆区中都有独立的内存空间记录各自的成员变量信息,当所有对象中的某个成员变量数值完全相同时,若每个对象还各自记录则会造成内存空间的浪费。
为了避免上述问题的发生,则使用static关键字修饰成员变量,表示"静态的"含义,此时该成员变量由对象层级提升为类层级被所有对象共享,该成员变量会随着类的加载而准备就绪,通常建议使用类名.的方式访问。
static关键字可以修饰成员变量,也可以修饰成员方法。
2.2 使用方式
(1)在非静态的成员方法中,既可以访问非静态的成员也可以访问静态的成员;
(成员:成员变量 + 成员方法 => 被所有对象共享)
(2)在静态的成员方法中,只能访问静态成员不能访问非静态成员;
(成员:成员变量 + 成员方法 => 调用静态方法时可能还没有创建对象)
(3)只有隶属于类层级被所有对象共享的内容才可以使用static修饰,
也就是不能滥用static关键字;
案例:
自定义Singleton类实现封装。
自定义TestSingleton类,要求在main()方法中能得到且只能得到Singleton类的一个对象。
2.3 单例设计模式(重中之重)
(1)基本概念
在某些特殊场合中,对于能创建且只能创建一个对象的类来说,叫做单例类。
设计单例类的思想和模式叫做单例设计模式。
(2)实现流程
a.私有化构造方法,使用private关键字修饰;
b.提供本类类型的引用指向本类类型的对象并使用private static关键字共同修饰;
c.提供公有的get成员变量方法负责将该对象返回出去;
(3)实现方式
单例设计模式主要分为两种:饿汉式 和 懒汉式,在以后的开发中推荐使用饿汉式。
3.继承(重中之重)
人类:
特征:姓名、年龄
行为:吃饭、娱乐
学生类 继承 人类:
特征:学号
行为:学习
教师类 继承 人类:
特征:工号
行为:讲课
工人类 继承 人类:
特征:薪水
行为:工作
... ...
3.1 基本概念
当多个类中有相同的特征和行为时,则可以将共性的内容提取出来组成一个公共类,让多个类分别吸收公共类中已有的特征和行为,在各个类的内部只需要编写自己独有特征和行为的机制,叫做继承。
使用继承可以提高代码的复用性,可维护性以及可扩展性。
在Java语言中使用extends关键字来表达继承的关系。
如:
public class Student extends Person{} - 表示Student类继承自Person类
其中Person类通常叫做超类、父类、基类。
其中Student类通常叫做派生类、子类、孩子类。
3.2 注意事项
(1)子类可以继承父类的成员变量和成员方法,包括私有成员变量但不能直接使用。
子类不可以继承父类的构造方法和私有方法。
(2)无论使用何种方式构造子类对象时,都会自动调用父类的无参构造方法来初始化从
父类中继承下来的成员,相当于在构造方法的第一行增加代码:super();的效果。
(3)在Java语言中支持单继承不支持多继承,也就是每个子类只有一个父类,而每个
父类可以有多个子类。
(4)使用继承必须满足以下逻辑关系:子类 is a 父类,也就是不能滥用继承。
3.3 this和super的比较
(1)基本概念
this关键字主要用于代表本类类型的对象;
super关键字主要用于代表父类类型的对象;
(2)使用方式
使用this.的方式可以访问本类的成员变量和成员方法;
使用super.的方式可以访问父类的成员变量和成员方法;
使用this(实参)的方式可以调用本类中的其他构造方法;
使用super(实参)的方式可以调用父类的构造方法;
要求大家掌握的用法:
a.使用this.的方式可以区分同名的成员变量和形参变量;
b.使用super(实参)的方式可以调用父类中的构造方法;
c.使用super.的方式可以调用父类中被重写以后的方法;
3.4 方法的重写(Override)
(1)基本概念
当父类中继承下来的方法不足以满足子类的需求时,则需要在子类中重新写一个和父类一样的方法,去覆盖从父类中继承下来的方法,叫做方法的重写。
(2)重写的原则
a.要求方法名、参数列表和返回值类型相同,从jdk1.5开始允许返回子类类型。
b.访问权限不能变小,可以相等或变大。
c.不能抛出更大的异常。
(1)封装 (2)static关键字 (3)继承的更多相关文章
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- java中static关键字的继承问题
结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 原因: 1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用 ...
- 面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载
面向对象三大特点:封装.继承.多态 封装概念 ① 将东西包装在一起,然后以新的完整形式呈现出来: 将方法和字段一起包装到一个单元中,单元以类的形式实现; ② 信息隐藏,隐藏对象的实现细节,不让 ...
- this关键字、static关键字、block块、封装类以及继承、import、修饰符的初步了解
this关键字 定义 在类的方法定义中使用this关键字代表使用该方法的引用. this即"自己",代表对象本身,谁调用代表谁.在成员方法中或构造器中隐式的传递. this的两种用 ...
- java:构造方法:无参构造/有参构造 this static关键字 静态变量 静态方法 代码块 封装 静态常量。
/*构造方法是一种特殊的方法,专门用于构造/实例化对象,形式:[修饰符] 类名(){ }构造方法根据是否有参数分为无参构造和有参构造*/public class Dog { ...
- 封装和static 以及关键字“this”的用法
1 封装 1.1 构造方法 构造方法是一种特殊的方法,专门用于构造/实例化对象,形式 [修饰符] 类名(){}: 1.1.1 无参构造 无参构造方法就是构造方法没有任何参数.构造方法在创建对象(new ...
随机推荐
- spark集群构建
一.spark启动有standalong.yarn.cluster,具体的他们之间的区别这里不在赘述,请参考官网.本文采用的是standalong模式进行搭建及将接使用. 1.首先去官网下载需要的sp ...
- Bootstrap table 跨页全选
此代码是针对于bootstrap table中分页的跨页全选. 以下是整个bootstrap的定义 <script type="text/javascript" src=&q ...
- 多条件搜索问题 -sql拼接与参数化查询
来源:传智播客 免费开发视频. 问题:根据书名或出版社或作者查询书籍信息. using System; using System.Collections.Generic问题; using Syste ...
- Flume - 快速入门
关于Flume,官方定义如下: Apache Flume is a distributed, reliable, and available system for efficiently collec ...
- Hive 基础你需要掌握这些
HDFS 中一个简单的 Join查询,是否需要撸一大串代码?我只会SQL语句 能不能入坑大数据?这里我们就来聊一聊 Hive. Hive 是什么? Hive 是一种数据仓库工具,不提供数据存储(数据还 ...
- LeetCode刷题第二天
2.给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们 ...
- 说说HTML5中label标签的可访问性问题——张鑫旭
一.开篇叨叨 一般稍微有些经验的页面制作人员都知道label标签可以优雅地扩大表单控件元素的点击区域,例如,单纯的单选框点击区域就鼻屎那么大的地方,经常会点不到位置.因此,label标签的使用对于提高 ...
- tr,td高度不生效
功能:表格内容较长,但是页面高度有限,超出显示滚动条 阻碍:给tr或者td加高度都不生效,不显示滚动条 解决方案:td中加div,设置高度和内容溢出时的样式 <table border='1' ...
- 自定义TableViewCell 的方式实现自定义TableView(带源码)
转载于:http://www.cnblogs.com/macroxu-1982/archive/2012/08/30/2664121.html 实现的效果 实现过程 Step One 创建 自定义Ta ...
- 关于CSRF跨域请求伪造的解决办法
中秋节时候我们的应用在短信验证码这块被恶意刷单,比如被用来做垃圾短信之类的,如果大规模被刷也能造成不小的损失.这还只是短信验证码,如果重要的API遭到CSRF的攻击,损失不可估量.所以紧急加班解决了C ...