java学习笔记3--类与对象的基础
面向对象的程序设计
与结构化程序设计方法相比,更符合人类认识现实世界的思维方式,已成为程序设计的主流方向
涉及的主要概念:抽象、封装、继承、多态
对象
现实世界中:万物皆对象,都具有各自的属性,对外界都呈现各自的行为
程序中:一切都是对象,都具有标识 (identity), 属性和行为(方法),通过一个或多个变量来保存其状态,通过方法(method) 实现他的行为
将属性及行为相同或相似的对象归为一类,类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为,在面向对象的程序设计中,每一个对象都属于某个特定的类抽象
忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面;计算机软件开发中所使用的抽象有:过程抽象和数据抽象
过程抽象:
–-将整个系统的功能划分为若干部分,强调功能完成的过程和步骤,而隐藏其具体的实现
–-任何一个明确定义的功能操作都可被看作单个的实体,尽管这个操作实际上可能由一系列更低级的操作来完成
–-基于过程抽象的两个标准程序设计技术过程:分解、递归技术
–-将需要处理的数据和这些数据上的操作结合在一起,抽象成不同的抽象数据类型
–-每个抽象数据类型既包含了数据,也包含了针对这些数据的操作
–-相对于过程抽象,数据抽象是更为合理的抽象方法
数据(属性)
int Hour; int Minute; int Second;
方法(行为)
SetTime(); ShowTime();
封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象
是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的派生类(也称为子类)
使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序方法同名问题
2、类与对象
在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class),一个类是对一类对象的描述。类是构造对象的模板,对象是类的具体实例
声明形式:[public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] {
变量成员声明及初始化;
方法声明及方法体;
}
class:表明其后声明的是一个类。
extends:如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
implements:l如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后
修饰符:可以有多个,用来限定类的使用方式
public:表明此类为公有类
abstract:指明此类为抽象类
final:指明此类为终结类
先看一个钟表类的例子:
public class Clock // 成员变量 int hour ; int minute ; int second ; // 成员方法 public void setTime(int newH, int newM, int newS) { hour = newH ; minute = newM ; second = news ; public void showTime() { System.out.println(hour + ":" + minute + ":" + second); }
对象的声明
格式: 类名 变量名
例如:Clock是已经声明的类名,则下面语句声明的变量aclock将用于存储该类对象的引用:Clock aclock;
声明一个引用变量时并没有对象生成
对象的创建
生成实例的格式:
new 类名 ()
例如: aclock=new Clock()
其作用是:
在内存中为此对象分配内存空间
返回对象的引用(reference ,相当于对象的存储地址)
引用变量可以被赋以空值
例如:aclock=null;
数据成员
表示Java类的状态,声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性。在一个类中成员变量名是唯一的,数据成员的类型可以是Java中任意的数据类型(简单类型,类,接口,数组)
分为实例变量和类变量
–声明格式[public | protected | private]
[static][ final][transient] [volatile]
变量数据类型 变量名1[=变量初值],
变量名2[=变量初值], … ;
–格式说明
public、protected、private 为访问控制符
static指明这是一个静态成员变量
final指明变量的值不能被修改
transient指明变量是临时状态
volatile指明变量是一个共享变量
类变量,也称为静态变量,声明时需加static修饰符,不管类的对象有多少,类变量只存在一份,在整个类中只有一个值,类初始化的同时就被赋值
适用情况:
类中所有对象都相同的属性
经常需要共享的数据
系统中用到的一些常量值
例:对于一个圆类的所有对象,计算圆的面积时,都需用到π的值,可在Circle类的声明中增加一个类属性PI
实例变量和类变量都可被声明为final
final实例变量必须在每个构造方法结束之前赋初值,以保证使用之前会被初始化
final类变量必须在声明的同时初始化
类方法,也称为静态方法,表示类中对象的共有行为,声明时前面需加static修饰符,不能被声明为抽象的,类方法可以在不建立对象的情况下用类名直接调用,也可用类实例调用
//将摄氏温度(centigrade)转换成华氏温度(fahrenheit) //转换公式为 fahrenheit = centigrade * 9 / 5 + 32 //除了摄氏温度值及公式中需要的常量值,此功能不依赖于具体的类实例的属性值,因此可声明为类方法 //转换方法centigradeToFahrenheit放在类Converter中 public class Converter { public static int centigradeToFahrenheit(int cent) { return (cent * 9 / 5 + 32); //方法调用 Converter.centigradeToFahrenheit(40);
get方法
功能是取得属性变量的值,get方法名以“get”开头,后面是实例变量的名字,一般具有以下格式:
public fieldType get FieldName () {
return fieldName
}
对于实例变量radius,声明其get方法如下:public int getRadius(){ return radius; }
set方法
功能是修改属性变量的值,set方法名以“set”开头,后面是实例变量的名字,一般具有以下格式:
public void set FieldName ( fieldType paramName ) {
fieldName = paramName
}
声明实例变量radius的set方法如下:public void setRadius(int r){ radius = r; }
关键字this的使用
如果形式参数名与实例变量名相同,则需要在实例变量名之前加this关键字,否则系统会将实例变量当成形式参数。
在上面的set方法中,如果形式参数为radius,则需要在成员变量radius之前加上关键字this。代码如下:
public void setRadius(int radius){ this.radius = radius; }
Mooc翁恺-Java面向对象程序设计 第一周 类与对象 用对象思考,用类来写作。Java语言是一种面向对象语言,是业界使用最为广泛的语言,十二年前就占据了1/4的编程语言份额,到今天仍然以1/5的比例站在编程语言排行榜的前列。Java是优秀的面向对象编程语言,特别适合构建多人协作的大型软件产品。...
相关文章
- [Java基础] Java线程复习笔记
- 【Spring Boot】Spring Boot之使用 Java High Level REST Client 整合elasticsearch
- Java实现第八届蓝桥杯字母组串
- Java实现 蓝桥杯 基础练习 特殊的数字
- java的IO操作:System类对IO的支持。
- Java 基础:hashCode方法
- 【JAVA】Macbook eclipse快速抽取函数快捷键(extract method)
- [Java Spring Data] Query method clauses and expressions
- [Java Spring] Built-in page and sorting
- 【JAVA】毕向东Java基础视频教程-笔记
- [Linux] Install java and add JAVA_HOME, PATH
- Java基础常见面试题总结(上)
- Atitit.视频文件加密的方法大的总结 java c# php
- Java基础篇 | Java开发环境的搭建
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- Java递归基础案例
- 解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题
- java数组排序,冒泡法
- java输入输出高速
- java.lang.OutOfMemoryError: Java heap space
- Java如何比较两个数组?
- Java基础(2)-Markdown语法
- 【java基础】使用Path和Files类,更方便的操作路径和文件