Java周记2(第二周)

学习java第二周了,对java这门语言有了更深的理解。

本周并没有多学什么新知识,而是复习巩固了面向对象这部分的内容,因为我觉得这部分计较基础和重要,囫囵吞枣一遍过去有种不踏实感,所以在实练的同时又在这上面多花了些时间。以下是对这部分内容的复习总结。

一,对象和类

1.基本概念

面向对象的程序是由对象组成的,每个对象包含对客户公开的特定功能部分和隐藏的实现部分。程序中的很多对象来自标准库,还有一些是自定义的。究竟是自己构造对象,还是从外界购买对象完全取决于开发项目的预算和时间。但是,从根本上说,只要对象能够满足要求,就不必关心其功能到底是如何实现的。

类是构造对象的模板或蓝图。我们可以将类想象成制作小甜饼的模具,将对象想象为小甜饼。由类构造对象的过程称为创建类的实例。

封装是处理对象的一个重要概念。从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。对象中的数据称为实例字段,操作数据的过程称为方法。作为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态。无论何时,只要在对象上调用一个方法,它的状态就有可能发生改变。

类之间的关系有依赖(“uses-a"),聚合("has-a"),继承(”is-a")。

2.使用预定义类

2.1 对象与对象变量

要使用构造器构造新实例,以Date类为例。

构造器的名字应该与类名相同,并且需要在构造器前面加上new操作符,如:

new Date()  //构造新对象

System.out.println(new Date());   //将这个对象传递给一个方法

System s = new Date().toString();   //应用toString方法

Date brithday = new Date();     //存放在一个变量中

对象变量并没有实际包含一个对象,它只是引用一个对象。

可以显示地将变量设置为null,指示这个对象变量目前没有引用任何对象。

2.2 更改器方法与访问器方法

只访问对象而不修改对象的方法有时称为访问器方法。

调用后对象状态发生改变的方法称为更改器方法。

3.用户自定义类

源文件名必须与public类的名字相匹配。在一个源文件中,只能有一个公共类,但可以有任意数目的非公共类。

​​​​​javac Employee*.java

javac Employee.java

 以上两种方法可以编译源程序。

3.1 构造器

a.构造器与类同名

b.每个类可以有一个以上的构造器

c.构造器可以有0个、1个或多个参数

d.构造器没有返回值

e.构造器总是伴随着new操作符一起调用

3.2  实例字段

  • 静态变量

public calss Math

{

    ...

    public static final double PI = 3.14;

    ...

}

  • final实例字段

class Employee

{

    private final String name;

}

不能再修改这个字符

  • 静态字段

class Employee

{

    private static int nextId=1;

    private int id;

}

 每个类只有一个

  • 用var声明局部变量

Employee harry = new Employee("Harry Hacher",5000,1989,10,1);

var harry = new Employee("Harry Hacher",5000,1989,10,1);

 使用var关键字只能用于方法中的局部变量,参数和字段的类型必须说明。

使用null引用。

3.3 参数

  • 隐式参数与显示参数:
public void raiseSalary(double byPercent)
{
     double raise = this.salary *byPercent/100;
     this.salary += raise;
}
  •  方法参数

按值调用表示方法接收的时调用者提供的量,而按引用调用表示方法接收的 是调用着提供的变量地址。

两种方法参数类型: 基本数据类型(数字、布尔值)

                                  对象引用

3.4 方法

  • 静态方法

静态方法是不在对象上执行的方法,换句话说,它没有隐式参数,不可以访问实例字段,但可以访问静态字段。

public static int getNextInt()

{

    return nextId; //return static field

}

  •  工厂方法
  • main方法

main方法也是一个静态,方法不对任何对象进行操作,事实上,在启动程序时还没有任何对象。

静态的main方法将执行并构造程序所需要的对象。

4.对象构造

 4.1 重载

有些类有多个构造器。例如,可以如下构造一个空的StringBuilderd对象:

var messages = new StringBuilder();

或者,可以指定一个初始字符串:

var todoList = new StringBuilder("To do:\n);

这种功能叫做重载,如果多个方法 有相同的没名字、不同的参数,便出现了重载。

4.2 默认字段初始化

如果在构造器中没有显式的为字段设置初值,那么就会被自动的赋为默认值:数值为0、布尔值为false、对象引用为null。

4.3 无参数的构造器

由无参数构造器创建对象时,对象的状态会设置为适当的默认值。

4.4 显式字段初始化

可以在类定义中直接为任何字段赋值,在执行构造器之前先完成这个赋值操作。初始值不一定是常量值。

class Employee
{
    private static int nextId;
    private int id = assingnId();
    ...
    private static int assignId()
    {
        int r = nextId();
        nextId++;
        return r;
    }
}

4.5 调用另一个构造器

如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器。

public Employee(double s);
{
     this("Employee #" + nextId s);
     nextId++;
}

4.6 初始化块

在一个类的声明中,可以包含任意多个代码块。只要构造这个类的对象,这些块就会被执行。无论使用哪个构造器构造对象,初始化块都会被实现。首先运行初始化块,然后才运行构造器的主体部分。

4.7 对象析构与finalize方法

如果一个资源一旦使用完就需要立即关闭,那么应当提供一个close方法来完成必要的清理工作。可以在对象使用完时调用这个close方法’

如果可以等到虚拟机退出,那么可以用方法Runtime.addShutdownHook增加一个”关闭钩“。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值