Java-四 类与对象

1 类

1)对象中的数据域称为实例域,操作数据的方法成为方法。

2)实现封装的关键在于绝对不能让类中的方法直接访问其他类的实力域,对象状态的改变必须通过调用方法实现。

2 对象

1)在Java中,任何对象变量的值都是对储存在另一个地方的一个对象的引用。new操作符的返回值也是一个引用。

      例如:      

Date d = new Date();

表达式new Date()构造了一个Date类的对象,并且它的值是对新创建对象的引用,这个引用存储在变量 d 中。

3 自定义类

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

4 final实例域

1)可以将实例域定义为final.在每一个构造器执行之后,这个域必须被设置,且在之后的操作不可对其修改.

5 静态域和静态方法

1) 例如在Math类中定义一个静态常量:

public class Math
{
    ...
    public static final double PI = 3.1415;
    ...
}

在程序中,可采用Math.PI 的形式获得该常量。

2)静态方法不能向对象实施操作的方法。 例如 Math 类的 pow方法,其表达式为 Math.pow(x,a);

3)静态方法不能访问非静态实例域,因为它不能操作对象,但可以访问自身类中的静态域。 

例:

public static int getId() {
        return id;    // 返回静态变量id
}

若在类外想调用该方法,则可通过类名调用该方法:    

int id = (Employee).getId();

4)静态方法还有另一种常见用途:类似 LocalDate 和 NumberFormat 的类使用静态工厂方法来构造对象

例:

LocalDate d = LocalDate.now();

LocalDate dd = LocalDate.of(1999, 8, 18);

6 方法和参数

1)一个方法不能修改基本数据类类型的参数(数字,字符,布尔值)。

2)一个方法可以改变一个对象参数的状态(例如实数域)。

3)一个方法不能让对象参数引用一个新的对象

例  交换两个类对象的值:

public static void  swap(Employee x, Employee y) {
        Employee tmp = x;
        x = y;
        y = tmp;
}    //交换失败

7 对象构造

1)要完整的描述一个方法,需要指出方法名和参数类型,这叫做方法的签名。返回类型不属于方法签名,也就是说,不能有两个名字相同,参数类型相同却返回类型不同的方法。

2)类中的域若没被初始化,会自动初始化为默认值( 0 , false, null)。

3)若类中提供至少一个构造器,则一定要提供无参数的构造器,否则会被视为不合法。

4)调用另一个构造器:

可在构造器中通过this来调用另一个构造器:

public Employee(double d) {
        this("3ngu", d);
}

5)初始化块:

public class Employee implements Cloneable{
	private String name;
	private double salary;
	private Date date;
    private static int Nextid;
    private int id;

    {                            //只要构造类的对象,块就会被执行
        id = Nextid;
        Nextid++;
    }

	public Employee(String Aname, double Asalary) {
		name = Aname;
		salary = Asalary;
		date = new Date();
	}
	
     。。。
}

6)

Java 使用包将类组织起来,将自己的代码域别人提供的代码库分开管理。

标准的 Java 类库分布于多个包中,包括 java.lang 和 java.util等。若有两个类的名字相同,只要将其放置不同包中即可。

通过import 关键字 访问一个特定的类或包: import 包名.类名; 

若两个包都有同名的类, 例如 java.util 和 java.sql 包都有日期类 Date,在共同需要使用时通过加上完整包名:

import java.util.Date;

java.util.Date d = new java.util.Date();

猜你喜欢

转载自blog.csdn.net/qq_39681830/article/details/82911379
今日推荐