学习Java的第三天——类和对象

今天是2020年1月26日,今天是正月初二啦,算了算,已经五六天没看书了,今天学习Java的日程得提上来了,这个病毒让我无法外出不得不学习,我太难了!!

1.Java程序的分类:
(1)Application(应用程序):可独立运行的应用程序
(2)Applet(小应用程序):嵌入在网页中的Java程序
(3)Servelt(服务器端应用程序)

2.Java的特点
(1)简单:Java语法类似于C++:Java摒弃了C++中很少使用、难理解、容易引发错误的地方,比如指针、结构、联合、操作符重载、内存管理等等
(2):面向对象:Java是真正面向对象的语言,Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。
(3)分布式
(4)健壮性:较强的查错能力和安全的指针模型
(5)安全:Java的bug越来越少
(6)可移植性

对象和类

1.类之间的关系

(1)依赖
如果一个类的方法操作了另外一个类的对象,那么这个类就依赖于另一个类
(2)聚合
一个类的对象包含了另一个类的对象
(3)继承
特殊和一般的关系

2.使用现有类

(1)创建对象
Date birthday = new Data();//这样创建的类只能使用一次
Data deadline =birthday;//deadline 和 birthday共同管理一段内存,类似于数组和字符串的使用

3.创建自己的类

3.1类的定义

3.1.1定义示例

在这里插入图片描述

3.1.2使用多个源文件

可以将每个类放在一个单独的源文件中,例如
Employee 件 类放在文件 Employee.java中 中
EmployeeTest 件 类放在文件 EmployeeTest.java中

3.1.3多个源文件程序的编译

编译可执行类,其它被调用的类会自动编译==

当编译器编译 EmployeeTest.java 时发现其中使用了
Employee 找类,它就会去寻找 Employee.class ,如果没有找到,编译器将自动编译 Employee.java

当编译 EmployeeTest.java 的时候,可以没有源文件Employee.java 要 ,只要Employee.class

3.2分析Employee类

3.2.1一个构造器

public Employee(String n,e double s,t int year,t int month,t int day);

构造器:

(1) 构造器是用来构造对象的特殊方法,通常在构造器中给实例字段赋初值
(2)构造器和类具有相同的名字
(3)一个类可以有多个构造器
(4)有的构造器可以有0 、1、或者多个参数
(5)构造器没有返回值
(6)返回 void 为 也不行,因为 void 也是类型
(7)构造器总是和 new 运算符一起被调用

3.2.2.四种方法

四种方法都被标记为public

 public String getName ();
 public double getSalary ();
 public Date getHireDay ();
 public void raiseSalary(double byPercent);

每个方法中,关键字this指向隐式参数,使用方法:this.方法名
在这里插入图片描述

3.2.3.三个实例字段

三个实例字段都被标记为private

private String name;
private double salary;
private Date hireDay;

(1)final实例字段
用final修饰的实例字段将不能被修改,而且这种字段在构造时必须初始化。
(2)static静态字段
静态字段对类的每个实例都是共享的

3.2.4.main方法

在这里插入图片描述

3.2.5 权限修饰符

3.2.5.1 字段修饰符

在这里插入图片描述

3.2.5.2 类修饰符
类的访问控制符或为public,或为默认,如果为public,则该类可以被其他类所访问,若
为默认,则只能被同包中的类所访问

3.3对象构造

3.3.1默认字段初始化

如果在构造器中没有显示的给某个字段赋值,那么它会被自动赋为默认值
在这里插入图片描述

3.3.2初始化块

在这里插入图片描述

3.4对象析构

3.4.1finalize方法

1.可以在任何类中添加finalize方法,该方法会在垃圾收集器清楚对象之前被调用
2.可以在该方法中释放一些系统资源,如:文件句柄、数据库连接、网络连接等等
3.不要依赖finalize方法回收任何短缺资源
4.可以使用如下方法强制垃圾回收器工作:System.gc();
在这里插入图片描述

3.5 两种其他修饰符(static、final)

在这里插入图片描述

3.5.1 static

3.5.1.1 static字段

1.用static修饰符修饰的字段最本质的特征是它们是类的字段,而不是属于一个对象实例

2.它不保存在某个对象实例的内存区间,二是保存在内存区域的公共存储单元

3.类变量可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的

4.在一定意义上,它可以表示一个全局变量

3.5.1.2 static方法

1.用static修饰符修饰的方法仅仅属于类的静态方法,又称为类方法,不用static修饰的
方法称为实例方法

2.类方法的本质是该方法是属于整个类的、而不是属于某个实例的。

3.深刻含义:非static的方法是属于某个对象的方法,在这个对象创建时,对象的方法在
内存中拥有自己的专属片段。而static方法是属于整个类的,它在内存中的代码将随着类
的定义而进行分配和重载,不被任何一个对象专有。

4.由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而
只能处理属于整个类的成员变量,即static方法只能处理本类中的static域或调用
static方法

5.在static方法中,不能访问实例变量,不能使用this和super

6.调用这个方法时,应该使用类名直接调用,也可以使用某一个具体的对象名
如Math.random()

3.5.2 final

3.5.2.1 final类

如果一个类被final修饰符所修饰和限定,说明这个类不能被继承,即不可能有子类

3.5.2.2 final方法

final修饰符所修饰的方法,是不能被子类所覆盖的方法

3.5.2.3 final字段及局部变量

1.它们的值一旦给定,将不能更改

2.是只读量,它们能且只能被赋值一次,而不能被赋值多次

3.如果一个字段被static final 两个修饰符所限定时,它可以表示常量
比如Interger.MAX_VALUE(表示最大整数)、Math.PI(表示圆周率)就是这种常量

4.关于赋值:在定义static final 域时,如果不给定初始值,则按默认值进行初始化
	   在定义final字段时,若不是static域,则必须只能赋值一次,不能缺省
	   在定义final局部变量时,也必须只能赋值一次,它的值可能不是常量,但它
	   的取值在变量存在期间不会改变

在这里插入图片描述

发布了8 篇原创文章 · 获赞 1 · 访问量 198

猜你喜欢

转载自blog.csdn.net/weixin_45406155/article/details/104086115