Java类

概述

1. 类

a. 是构造对象的模板和蓝图
b. 由类构造对象的过程成为创建类的实例
c. 封装从形式上看就是数据和行为组装在一个包中,并对使用者隐藏数据的实现方式。其中的数据成为实例域,操纵数据的过程为方法。对每一个特定的类实例,都有一组特定的实例域值,成为对象的当前状态。实现封装的关键在于绝不能让类中的方法直接的访问其他类的实例域。封装给对象赋予了“黑盒”的特征
在java中,所有的类都源自于一个“超类”,即object类。
d.继承就是通过扩展一个类来建立另外一个类的过程。

2. 对象

对象主要包含三个特征:1.对象的行为(可对对象施加哪些操作或者方法)2. 对象的状态(对象如何响应行为)3. 对象标识(如何辨别具有相同行为与状态的不同对象)
a. 对象都保存着当前特征的信息,即对象的状态
b. 对象状态的改变必须通过调用某种方法去实现
c. 对象的状态并不能完全描述一个对象(例如,两个人身高体重甚至名字可以完全相同,但却是两个人)

3. 类之间关系

类之间常见的关系主要有三种:

a. 依赖(“user-a”)如果一个类的方法操纵另一个类的对象,就说一个类依赖于另一个类。ps:尽量减少这种依赖关系,越少,证明其中一个类的改变对另一个类造成的bug就越少

b. 聚合(“has-a”)类A的对象包含类B的对象

c.继承(“is-a”)类A扩展类B,则类A中不但有一些类B的方法,还会有一些类B没有但类A独有的方法。

 --------------------------

4. 类的使用方式

首先要使用一个对象的话,必须要先a.构造对象 b.设定对象的状态 c.进行对象的行为等操作

对应a,通过构造器(constructor,用于构造并初始化对象)构造新的对象实例

  • 构造器的名字应该与类名相同 
    Date ndate = new Date();

具体实例

 1 import java.time.*;
 2 public class EmployeeTest
 3 {
 4     public static void main(String[] args)
 5     {
 6         //初始化
 7         Employee[] staff = new Employee[3];
 8         staff[0] = new Employee("wang", 7000, 2017, 12, 29);
 9         staff[1] = new Employee("li", 9000, 2014, 01, 20);
10         staff[2] = new Employee("han", 12000, 2015, 04, 19);
11         // 对象行为
12         for(Employee e:staff)
13         {
14             e.raiseSalary(10);
15         }
16         for(Employee e:staff)
17         {
18             system.out.println("name = " + e.getName() + "salay = " + e.getSalary() + "hireDay = " + e.getHireDay());
19         }
20     }
21 }
22 
23 class Employee
24 {
25     //实例域
26     private String name;
27     private double salary;
28     private localDate hireDay;
29 
30     //构造方法
31     public Employee(String n, double s, int year, int month, int day)
32     {
33         name = n;
34         salary = s;
35         hireDay = LocalDate.of(year, month, day);
36     }
37     // 方法
38     public String getName()
39     {
40         return name;
41     }
42     public double getSalary()
43     {
44         return salary;
45     }
46     public LocalDate getHireDay()
47     {
48         return hireDay;
49     }
50     public void raiseSalary(double byPercent)
51     {
52         double raise = salary*(byPercent/100);
53         salary += raise;
54     }
55 }

番外

1. 对象与对象变量之间的区别

举例如下:ndate就是对象变量,但不是对象,也没有引用对象,相关的Date方法还不能应用于ndate上。

一个对象变量并没有包含一个对象,而是引用一个对象

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

可以显示的将对象变量设定为null

Date ndate;
Date birthday = new Date();
ndate = birthday //引用
ndate = new Date();//初始化

 

 

 

posted @ 2018-04-18 23:59  NirvanaInFire  阅读(282)  评论(0编辑  收藏  举报