类与对象

1 面向对象方法的特性
       抽象、封装、继承、多态

抽象
• 忽略问题中与当前目标无关的方面
• 只关注与当前目标有关的方面

封装
• 利用抽象数据类型将数据和基于数据的操作封装在一起;
• 用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的;
• 封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节。

继承
• 是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的子类(也称为派生类);
• 在继承过程中子类继承了超类的特性,包括方法和实例变量;
• 子类也可修改继承的方法或增加新的方法;
• 有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量。

多态
• 超类及其不同子类的对象可以响应同名的消息,具体的实现方法却
不同;
• 主要通过子类对父类方法的覆盖来实现

2 Java中类声明
[public] [abstract | final] class 类名称
[extends 父类名称]
[implements 接口名称列表]
{
数据成员声明及初始化;
方法声明及方法体;
}
<文字>
• class              ▫ 表明其后声明的是一个类。
• extends         ▫ 如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
• implements   ▫ 如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后
• public            ▫ 表明此类为公有类
• abstract         ▫ 指明此类为抽象类
• final                ▫ 指明此类为终结类

3 数据成员声明
• 语法形式
[public | protected | private]
[static][ final][transient] [volatile]
数据类型 变量名1[=变量初值], 变量名2[=变量初值], ... ;
• 说明
public、protected、private 为访问控制符。
static  指明这是一个静态成员变量(类变量)。
final  指明变量的值不能被修改。
transient  指明变量是不需要序列化的。
volatile  指明变量是一个共享变量。

4 类变量(静态变量)
用static修饰。在整个类中只有一个值,类初始化的同时就被赋值。
适用情况
▫ 类中所有对象都相同的属性。
▫ 经常需要共享的数据。
▫ 系统中用到的一些常量值。
• 引用格式
<类名 | 实例名>.<类变量名>

5 可变长参数
• 可变长参数使用省略号表示,其实质是数组。
• 例如,“String ... s”表示“String[] s” 。
• 对于具有可变长参数的方法,传递给可变长参数的实际参数可以是
零个到多个对象。

6 包

• 包是一组类的集合
• 一个包可以包含若干个类文件,还可包含若干个包

包的作用:

• 将相关的源代码文件组织在一起。
• 类名的空间管理,利用包来划分名字空间可以避免类名冲突。
• 提供包一级的封装及存取权限。

包的命名
• 每个包的名称必须是“独一无二”的。
• Java中包名使用小写字母表示
 命名方式建议
将机构的Internet域名反序,作为包名的前导;
若包名中有任何不可用于标识符的字符,用下划线替代;
若包名中的任何部分与关键字冲突,后缀下划线;
若包名中的任何部分以数字或其他不能用作标识符起始的字符开头,
前缀下划线。

引入包
• 为了使用其它包中所提供的类,需要使用import语句引入所需要的
类。
• Java编译器为所有程序自动引入包java.lang。

静态引入
• 单一引入是指引入某一个指定的静态成员,例如:import static java.lang.Math.PI;

如果在程序中需要多次使用静态成员,则每次使用都加上类名太繁琐。用静态引入可以解决这一问题。
• 全体引入是指引入类中所有的静态成员,例如:import static java.lang.Math.*;

7 编译单元
• 一个Java源代码文件称为一个编译单元,由三部分组成:
▫ 所属包的声明(省略,则属于默认包);
▫ Import (引入)包的声明,用于导入外部的类;
▫ 类和接口的声明。
• 一个编译单元中只能有一个public类,该类名与文件名相同,编译
元中的其他类往往是public类的辅助类,经过编译,每个类都会产一个class文件。

原文地址:https://www.cnblogs.com/td15980891505/p/6179965.html