1.类

类(class)是**构造对象**的蓝图, 由类来创建对象的过程叫做**实例化**。

1.1去识别类
在分析问题的过程中寻找名词,而方法对应着动词。
结合类 ,对象,方法举个例子,在订单处理系统中,有商品(Item),订单(Order)一类名词,将这些看作“类”。
“支付”,“发送”,“取消”,很明显是对订单的操作,即动词
当一个新的商品(Item)添加到订单(Order)时,一个新的订单对象出现了。假设订单知道如何增删商品,以及排序商品,那么增加(add)应该是订单(Order)类中的一个方法,而Item对象是一个参数

2.封装

封装(encapsulation)是与对象有关的一个重要概念 。
  1. 形式上,封装将数据行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。
  2. 对象中的数据称为实例域操纵数据的过程称为 方法
    实现封装的关键 就是不让类中的方法直接地访问其他类的实例域。程序仅通过对象的方法 与对象数据进行交互。

3.对象

思考:对于对象的操作,对象本身的响应,对象的标示(区分相同行为与状态的不同对象)
  1. 构造对象
    想要使用对象,首先要构造对象, 构造器是一种特殊的方法,用来构造并且初始化对象。
    构造器的名字应该与类名相同。
    例如类Data,假设其对象将描述当前时间,比如13:28:03 星期日 2021年8月29日。Data类的构造器名即Data,要创造一个Data对象,在构造器钱加上new操作符
new Date()

这个表达式构造了一个新对象,这个对象被初始化为当前时间,也可以将这个对象传递一个一个方法

sout(new Data());String s = new Date().toString();

不像上图那样,通常我们想让构造的对象多次使用,需要将对象存放在一个变量中

Date birthday = new Date();

对象变量和对象的区别

Date deadline; 	//这里定义了
//一个对象变量,但他不是一个对象
//因此不能将Data的方法应用到这个变量上
//所以我们必须像上图那样为他初始化
Date deadline = new Date();

Java中,任何对象变量的值都是对存储在另外一个地方的对象的引用,表达式new Date()
创造了一个Date类型的对象,并且它的值是对新创造对象的引用。这个引用存储在对象deadline中。
将对象变量赋值为null时,表明这个变量目前没有引用对象,如果将方法应用于值为null的对象上,就会有runtime error(运行时错误)。

Java核心技术笔记抄写。

4.静态域

class Employee
{
		private static int nextId = 1;
		private int id;

实例域 id, 静态域 nextId
如果有 1000 个 Employee 类的对象, 则有 1000 个实例域 id。但是, 只有一
个静态域 nextld。即使没有一个雇员对象, 静态域 nextld 也存在。它属于类。
所以可以称静态域为类域

5.值传递和引用传递

Java设计语言总是按照值调用,完成引用传递可以将对象引用作为参数,然后再更改对象的数据。

public static void tripieSalary (Employee x) // works
{
x.raiseSalary(200);
}
harry = new Employee(. . .);
tripieSalary(harry);

6.重载

有些类由多个构造器,例如可以构造一个空的字符串对象

StringBuilder messages = new StringBuilderO;
或者, 可以指定一个初始字符串:
StringBuilder todoList = new StringBuilderC(“To do");

如果多个方法有相同名字,不同参数便构成了重载

7.变量初始化

java商品实现信息化的展示 java定义商品类_java


局部变量没有默认值,要初始化。类变量 有默认值 ,可进行初始化。

8.无参构造器

如果在编写一个类的时候没有编写构造器,那么系统会提供一个无参数构造器,这个构造器将所有类域设置为默认值。
另一种情况,如果类中至少提供了一个有参构造器,但没有提供无参构造器,如果你在构造对象的时候没有提供参数就会被视为不合法。

9.调用另一个构造器

this关键词的另一个含义:一个构造器可以调用另一个构造器。
如果构造器的第一个语句形如 this(…), 这个构造器将调用同一个类的另一个构造器。下
面是一个典型的例子:

public Employee(double s)
{
// calls Employee(String, double)
this("Employee #" + nextld, s);
nextld++;
}

当调用 new Employee(60000) 时, Employee(double) 构造器将调用 Employee(String,double)
构造器。
采用这种方式使用 this 关键字非常有用, 这样对公共的构造器代码部分只编写一次
即可。

10.初始化块

public class InitializationBlock {
    public static void main(String[] args) {
        xx a = new xx("Nihat",55);
    }
}

class xx {
    private static int nextld;
    private int id;
    private String name;
    private double salary;

    // object initialization block
    {
        id = nextld;
        id++;
        System.out.println("yes");

    }

    public  xx(String n, int s)
    {
        name = n;
        nextld = s;
    }
    public xx()
    {
        name = "";
        salary = 0;
    }
}

无论使用哪个构造器构造对象,id域都在对象初始化块中被初始化。首先运行初始化块,然后才运行构造器主体部分。
建议将类变量定义放在初始化块前面以免造成重复定义,就是初始化块中最好不要进行变量定义。)
清晰可见,初始化块是直接用大括号括起来的

java.util.Random 1.0
•Random( )
构造一个新的随机数生成器。
• int nextlnt(int n)1.2
返回一个 0 ~ n-丨之间的随机数。

11.作用域

标记为public的部分可以被任意的类使用,标记为private的部分只能被定义他们的类使用,如果没有指定public或者private,那么这个部分(类,变量,方法)可以被同一个包中的所有方法访问。