Java基础学习笔记(八)—— java中的类、包、方法重载
Life was like a box of chocolates, you never know what you’re gonna get.
| @Author:TTODS
面向对象是Java最重要的特性。Java是彻底的、纯粹的面向对象语言,在Java中“一切都是对象”。本章将介绍面向对象基础知识。
面向对象三个基本特性
封装性
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
继承性
继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。
多态性
多态性是指在父类中成员变量和成员方法被子类继承之后,可以具有不同的状态或表现行为。
类
类是Java中的一种重要的引用数据类型,是组成Java程序的基本要素。它封装了一类对象的数据和操作。
类声明
类的声明格式如下:
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] {
//类体
}
其中[ ]
内的代码表示可省略,|
表示或者。
public
,abstract
,final
用来修饰类的声明。
class className
: class
是类声明的关键字,className
是类名
extends superclassName
:表继承,superclassName
是父类名。可以省略,省略则代表父类是Object
,Object
类是所有类的根类,所有类都直接或间接继承Object
implements interfaceList
:类实现的接口列表
成员变量
成员变量的声明格式如下:
class className {
[public | protected | private ] [static] [final] type variableName; //成员变量
}
type
是成员变量的类型,variableName
是成员变量名。type前的关键字都是成员变量的修饰符,说明如下:
public
、protected
和private
修饰符用于封装成员变量。
static
修饰符用于声明静态变量,所以静态变量也称为“类变量”。
final
修饰符用于声明变量,该变量不能被修改。
成员方法
class className {
[public | protected | private ] [static] [final | abstract] [native] [synchronized]
type methodName([paramList]) [throws exceptionList] {
//方法体
}
}
public
,protected
,private
修饰符用于封装方法
static
修饰符用于声明静态方法,静态方法也叫“类方法”
final
| abstract
不能同时修饰方法,final
修饰的方法不能在子类中被覆盖;abstract
用来修饰抽象方法,抽象方法必须在子类中被实现。
native
修饰方法,称为“本地方法”,本地方法调用平台本地代码(如:C或C++编写的代码),不能实现跨平台。
synchronized
修饰的方法是同步的,当多线程方式同步方法时,只能串行地执行,保证是线程安全的.
paramList
是该方法的参数列表
throws exceptionList
是抛出异常列表
包
包作用
我们在c++中经常使用下面这样的代码:
using namespace std;
意思是使用标准的命名空间。区分不同的命名空间是因为一样的标识符在不同的命名空间内用法可能不同。其实java中的包本质上就是命名空间
包定义
package pkg1[.pkg2[.pkg3…]];
pkg1~ pkg3都是组成包名一部分,之间用点(.)连接,它们命名应该是合法的标识符,其次应该遵守Java包命名规范,即全部小写字母。
包引入
使用 import 引用包
import package1[.package2…].(类型名|*);
常用包
- java.lang包
java.lang包含中包含了Java语言的核心类,如Object、Class、String、包装类和Math等,还有包装类Boolean、Character、Integer、Long、Float和Double。使用java.lang包中的类型,不需要显示使用import语句引入,它是由解释器自动引入。 - java.io包
java.io包含中提供多种输入/输出流类,如InputStream、OutputStream、Reader和Writer。还有文件管理相关类和接口,如File和FileDescriptor类以及FileFilter接口。 - java.net包 java.net包含进行网络相关的操作的类,如URL、Socket和ServerSocket等。
- java.util包 java.util包含一些实用工具类和接口,如集合、日期和日历相关类和接口。
- java.text包 java.text包中提供文本处理、日期式化和数字格式化等相关类和接口。
- java.awt和javax.swing包
java.awt和javax.swing包提供了Java图形用户界面开发所需要的各种类和接口。java.awt提供是一些基础类和接口,javax.swing提供了一些高级组件。
方法重载(Overload)
同样的方法名使用不同的参数列表,对不同的参数列表调用不同的方法叫做方法的重载。
例如前面的String 中 的indexOf方法