一枚c/c++程序员java探索-对象(-)

面向对象

思想

  • 从现在世界中客观存在的事物出发来构造软件系统,在系统的构造中尽可能运用人类的自然思维方式。
  • 强调运用人类在日常常采用的思想方法与原则,如抽象,分类,继承,聚合,多太等。

Java与面向对象

  • Java程序的核心就是对象(java程序中万事万物皆对象)
  • 对象可看成静态属性和动态属性的封装体
  • 类是创建同一类型的对象的模版,在一个类中定义了该对象具有的成员变量及方法

Java类的定义

  • 类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所具有的静态和动态属性
  • 类可以一类对象的模版

Java面向对象基本概念

  • Java语言中除基本类型外变量类型都称引用类型
  • Java中对象是通过引用对其操作的

对象创建和使用

  • 必须使用new关键字创建对象

    Student st = new Student();

  • 使用对象.成员变量来引用对象的成员变量
  • 使用对象.方法来调用对象的方法
  • 同一类的每个对象有不同的成员变量储存空间
  • 同一个类的每个对象共享该类方法

成员变量

  • 成员变量可以使用Java语言中任何一种数据类型
  • 定义成员变量可初始化,不初始化,将使用默认值
  • 成员变量的作用范围为整个类体

内存分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class BirthDate {
private int day;
private int mouth;
private int year;
public BirthDate(int d, int m, int y) { //构造函数
day = d;
mouth = m;
year = y;
}
public void setDay(int d) {
day = d;
}
public void setMouth(int m) {
mouth = m;
}
public void setYear(int y) {
year = y;
}
public int getDay() {
return day;
}
public int getMouth() {
return mouth;
}
public int getYear() {
return year;
}
public void display() {
System.out.println(day + "-" + mouth + " -" + year)
}
}
class Test {
public void main(String arge[]) {
Test test = new Test();
int date = 9;
BirthDate d1 = new BirthDate(7, 7, 1970);
BirthDate d2 = new BirthDate(1, 1, 2000);
test.change1(date);
test.change2(d1);
test.change3(d2);
System.out.println(" date =" + date);
d1.display();
d2.display();
}
public void change1(int i) {
i = 1234;
}
public void change2(BirthDate b) {
b = new BirthDate(22, 2, 2004);
}
public void change3(BirthDate b) {
b.setDay(22);
}
}

这里内存分布图如下:

命名规则

  • 类的首字母大写
  • 变量名和方法名首字母小写
  • 用驼峰标识

方法重载(overload)

指一个类中可以定义相同的名字,但参数不同的多个方法。调用时,根据不同参数表选择对应的方法

this 关键字

  • 一般用在类的方法中,代表使用该方法的对象的引用
  • 必须指出当前使用方法的对象是谁时要使用this
  • 使用this可以处理方法中成员变量和参数重名情况
  • this可以看作一个变量,他的值是当前对象的引用

static关键字

  • 在类中,static声明的成员变量为静态变量,它为该类的功用变量,第一次使用被初始化,对该类的所有对象来说,static成员变量只有一份。
  • 申明方法为静态方法,在调用时不会将对象的引用传递给他,所以在static方法中不可访问非static的成员(静态方法不在是针对于某个对象调用,所以不能访问非静态成员)
  • 可以通过对象引用或类名访问静态成员
JasonThink wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!