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)继承的更多相关文章

  1. 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封装 ...

  2. 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封装 ...

  3. 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封装 ...

  4. 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封装 ...

  5. java中static关键字的继承问题

    结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 原因: 1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用 ...

  6. 面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载

    面向对象三大特点:封装.继承.多态 封装概念 ①   将东西包装在一起,然后以新的完整形式呈现出来: 将方法和字段一起包装到一个单元中,单元以类的形式实现; ②   信息隐藏,隐藏对象的实现细节,不让 ...

  7. this关键字、static关键字、block块、封装类以及继承、import、修饰符的初步了解

    this关键字 定义 在类的方法定义中使用this关键字代表使用该方法的引用. this即"自己",代表对象本身,谁调用代表谁.在成员方法中或构造器中隐式的传递. this的两种用 ...

  8. java:构造方法:无参构造/有参构造 this static关键字 静态变量 静态方法 代码块 封装 静态常量。

    /*构造方法是一种特殊的方法,专门用于构造/实例化对象,形式:[修饰符] 类名(){ }构造方法根据是否有参数分为无参构造和有参构造*/public class Dog {               ...

  9. 封装和static 以及关键字“this”的用法

    1 封装 1.1 构造方法 构造方法是一种特殊的方法,专门用于构造/实例化对象,形式 [修饰符] 类名(){}: 1.1.1 无参构造 无参构造方法就是构造方法没有任何参数.构造方法在创建对象(new ...

随机推荐

  1. 红色警戒3原版V1.00基址大全

    127.0.0.1 servserv.generals.ea.com ===================================1.04 基址变化 00DFBD74=>DFCDF4 ...

  2. 个人总结(Alpha阶段)

    Alpha总结 我们在alpha 结束之后, 每位写一个博客, 回顾并总结自己的alpha 过程,哪些方面做的好的,哪些方面做得不足需要改进的 提出问题 同时,大家一定会在过程中产生了很多问题, 结合 ...

  3. org.springframework.beans.NullValueInNestedPathException

    报错代码: HTTP Status 500 - An exception occurred processing JSP page /WEB-INF/views/input.jsp at line 2 ...

  4. Window环境配置Mongodb

    Mongodb这几天也了解了一下,今天配置了下环境,从今天开始学下Mongodb数据库. 一.下载 在这个网址中选择要下载的开发环境https://www.mongodb.com/download-c ...

  5. sql中同一个表一个字段的值赋值给另一个字段

    UPDATE SG_User   SET DefaultOrganizationID = OrganizationID

  6. layer 中的 layer.alert layer.msg layer.confirm

    1.layer.alert layer.alert('见到你真的很高兴', {icon: 6}); 效果图 layer.alert('墨绿风格,点击确认看深蓝', { skin: 'layui-lay ...

  7. ie,你还能再浪一点不

    一个div,设置了高度,并且溢出滚动 各位观众,当点击滚动条的时候,event.target应该是什么呢? 火狐,chrome都认为是点击了div,这个也很好理解,他是div的滚动条,自然应该算div ...

  8. secureCRT的文件上传技巧

    现在我们经常会习惯性的使用windows系统,但现在开发项目和维护中经常都在使用linux服务器,以为它的性能更强.更精简. 学习大数据的同志们和维护后端的同志们,推荐一下secureCRT软件,用起 ...

  9. 解决Coursera平台上Andrew.Ng的机器学习课程无法正常提交编程作业的问题

    课程链接:https://www.coursera.org/learn/machine-learning/home/welcome 我使用的环境是MATLAB R2016a,Win10系统. 执行su ...

  10. 湘潭校赛 Hard Wuxing

    Hard Wuxing Accepted : 13   Submit : 166 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 “五行”是中国 ...