《Java语言与面向对象程序设计》-抽象、封装与类-Java学习笔记4

抽象与封装
1.    抽象
抽象是科学研究中经常使用的方法,即去除被研究对象中与主旨无关的次要部分,而仅仅抽取出与研究工作有关的实质性的内容加以考察。在计算机技术的软件开发方法中所使用的抽象有两类:
1)    过程抽象:过程抽象将整个系统的功能划分为若干部分,强调功能完成的过程和步骤
2)    数据抽象:把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质和作用等因素抽象成不同的抽象数据模型。
2.    封装
封装就是利用抽象数据类型,将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流和交互。

 

Java的类
抽象和封装这两个面向对象程序设计的重要特点主要体现在类的定义上。
1.    Java系统定义的类 

Java常用包
包名功能
java.langjava.lang包是Java语言的核心类库,包含了Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理等。每个Java程序运行时,系统都会自动引入Java.lang包,这个包的加载是默认的。
java.iojava.io包是Java语言的标准输入\输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类。
java.util包括了Java语言中的一些低级的实用工具:处理时间、处理变长数组、实现栈和HashTable等
java.util.zip用来实现文件压缩功能
java.awt是Java语言用来构建图形用户界面的类库,包括许多界面元素和资源
java.math提供了实现整数算术运算及十进制算术运算的类
java.text提供所有处理文本或日期格式的类
java.applet用来实现运行于Internet浏览器中的Java Applet的工具类库
java.net是Java语言用来实现网络功能的类库
java.sql实现JDBC的类库,利用这个包可以使Java程序具有访问不同种类的数据库的功能


2.    用户自定义类
         1)    定义类头
         2)    定义类体:属性+方法
3.    对象的创建和定义构造函数
          1)    创建对象:类名 新建对象名 = new 构造函数();//new为为新建对象开辟空间的算符。
           *每个创建的对象都占有自己的内存,并且由自己的方法操纵自己的域。

          2)构造函数
               创建一个对象的同时需要调用这个对象的构造函数完成对象的初始化工作。
               构造函数的特殊性:
             (1)    构造函数的方法名和类名相同
             (2)    构造函数没有返回值
             (3)    构造函数的主要作用是完成类对象的初始化工作
             (4)    在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。
             (5)    构造函数一般不能由编程人员显式的直接调用
               *用户的自定义类中未定义类的构造函数,系统将为这个类默认定义一个空构造函数,没有形式参数,也没有任何具体,不完成任何操作。

4.    类的修饰符:访问控制符、非访问控制符
非访问控制符:
               1)    abstract(抽象类):没有具体概念的类。
               2)    final(最终类):如果一个类被final修饰符所限定,说明这个类不能有子类。
*在Java程序中,当通过类名引用一个类或其对象时,实际上真正引用的既可能是这个类或其对象本身,也可能是这个类的某个子类及子类的对象,即具有一定的不确定性。用final修饰则可以保证这个类所实现的功能是稳定的。
*abstract和final不能同时修饰一个类
5.域:
               1)    在定义一个类时,需要定义一组称之为”域”或”属性”的变量,保存类或对象的数据。
               2)    如无static修饰符,这些变量也称之为”实例变量”,它们在类定义中被声明,但在创建类对象时才分配空间(位于对象空间中),并保存一个对象的数据。
               3)    实例变量的生命周期与对象存在的时间相同
               4)    用static修饰符修饰的域是仅属于类的静态域。
                        特点:1.它们是类的域,不属于任何一个类的具体对象。 
                                   2.它不保存在某个对象的内存区间中,而是保存在类的内存区域的公共存储单元。    
                                   3.任何一个类的对象去修改它时,也都是在对同一个内存单元进行操作。
                                   4.类的静态域可以成为该类各个对象共享的变量,便于实现一个类不同对象之间的通信。
               5)静态初始化器:由关键字static引导的一对大括号括起的语句组。与构造函数区别:
                                  1.构造函数是对每个新创建的对象初始化,静态初始化器是对类自身进行初始化
                                  2.构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载入内存时由系统调用执行
                                  3.不同于构造函数,静态化初始器不是方法,没有方法名,返回值和参数列表。
                6)最终域:final是可以用来修饰常量的修饰符,一个类的域如果被声明为final那么它的值在程序的整个执行过程中都不能改变。
                                  用final修饰符说明常量时,需要注意的是:
                                  1.需要说明常量的数据类型
                                  2.需要同时指出常量的具体取值
                                  3. 因为所有类对象的常量成员,其数值都固定一致,为了节省空间,常量通常声明为static。
                 7) volatile易失域:volatile用来修饰接受外部输入的域。

6.    方法
                 1)    抽象方法(abstract):
                                   1.    abstract方法只有方法头的声明,后面没有大括号包含的方法体。
                                   2.    所有的抽象方法,都必须存在于抽象类中,一个非抽象类中出现抽象方法是非法的。
                                   3.    为abstract方法书写方法体是没有意义的,abstract方法依附的abstract类没有自己的对象。
                 2)    静态方法(static):用static修饰符修饰的方法,是属于整个类的类方法。
                                   1.调用这个方法时,应该用类名做前缀,而不是某一个具体的对象名
                                   2.static方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有。
                                   3.static方法只能处理static域。
                 3)    最终方法:已经被private修饰符所限定以及所有包含在final类中的方法,都被默认为最终方法。不能被当前类的子类重新定义/不存在子类。
                 4)    本地方法(native):用来声明用其它语言书写方法体并具体实现方法功能的特殊方法。
                 5)    同步方法(synchronized):用于多线程共存程序中的协调和同步。
7.访问控制符

Java类的访问控制
 默认(无public修饰符)公共类(有public修饰符)
同一包中的类可以访问可以访问
不同包中的类不可访问可以访问
Java公共类成员访问控制
访问控制符访问控制范围
private私有访问控制符

只允许本类访问,只能被同一个类中的成员方法所访问。

*同一个类的不同对象可以访问对方的private域和方法

默认访问控制符允许同包的类访问
protected保护访问控制符允许子类(即使没在一个包内)访问、同包访问
public公共访问控制符可以被所有类访问

*对于默认类(没有public修饰),因为类本身被限制为包内可见,所以即使包成员被定义为

protected和public也只能在包内被访问。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值