java基础篇9 - 封装以及static关键字

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.不能抛出更大的异常。

不积跬步,无以至千里;不积小流,无以成江海。

但愿能够帮助看到这篇文章的你! ^_^ 加油

猜你喜欢

转载自blog.csdn.net/qq474800358/article/details/80489290
今日推荐