好程序员Java教程分享Java面向对象与面向过程,面向对象: 是一种看待问题, 解决问题的思维方式, 着眼点在于找到一个能够帮助解决问题的实体, 然后委托这个实体来解决问题 面向过程: 是一种看待问题, 解决问题的思维方式, 着眼点在于问题是怎样一步步的解决的, 然后亲力亲为的去解决这个问题 Java是一种面向对象的语言: 用Java这门语言, 可以很容易的写出具有面向对象思维方式的代码 用面向对象的编程语言写出的代码, 一定是面向对象的代码? 错! > 大象装冰箱: > > 面向过程: > > 1. 打开冰箱门 我 > 2. 把大象装进去 我 > 3. 关上冰箱门 我 > > 面向对象: > > 1. 打开冰箱门 冰箱 > 2. 把大象装进去 大象 > 3. 关上冰箱门 冰箱 > 小明要去组装一台电脑: > > 面向过程: > > 1. 补充电脑相关知识 小明 > 2. 去市场买零配件 小明 > 3. 将零配件运回家中 小明 > 4. 组装 小明 > > 面向对象: > > 1. 找到一个懂电脑的朋友(老王) 小明 > 2. 去市场买零配件 老王 > 3. 将零配件运回家中 快递 > 4. 组装 老王 **类和对象** 对象: 能够帮助解决问题的那个实体 类: 若干个具有相同的特征和行为的对象的集合 类和对象的关系: 类是对象的集合, 对象是类的个体 张三, 李四, 王五, 赵六, 人类 哈士奇, 泰迪, 金毛, 阿拉斯加, 拉布拉多, 萨摩耶... 狗类 快递: 顺丰, 各种通, 各种达, 超级英雄(Super Hero): Caption American, Iron man, Spider man, Doctor Strange, Ant #### 1.6.2 类的设计 类的语法: ```java class 类名 { // 类体 // 类是若干个具有相同的特征和行为的对象的集合 // 在类体中, 定义了这些相同的特征和行为 // 特征: 表现出的是属性(就是一个全局变量) // 行为: 表现出的是方法(不要加static) // 属性, 是有默认值的 // 整型: 0 // 浮点型: 0.0 // 布尔型: false // 字符型: '\0' '\u000' // 引用数据类型: null String name; int age; void eat() {} void sleep() {} void coding() {} } ``` 注意事项: 1. 类名是一个标识符, 遵循大驼峰命名法 2. 一个java文件中可以写多个类, 但是只有和文件名相同的那个类名可以修饰为public 3. 在程序编译的时候, 每一个类都会生成一个.class字节码文件, 而且.class文件的名字和类名相同 注意: 在程序中, 是先有类, 然后再从这个类中实例化一个对象 #### 1.6.3 对象的实例化 #### 1.6.4 对象的内存分析 #### 1.6.5 类中的成员的访问 **static**: 用关键字static修饰的成员, 叫做静态成员 没有用关键字static修饰的成员, 叫做非静态成员 **静态成员**: 1. 静态成员是属于类的, 在访问的时候, 需要用类来访问 2. 静态成员开辟空间, 是在这个类第一次被加载到内存中的时候开辟的 **非静态成员**: 1. 非静态成员是属于对象的, 在访问的时候, 需要用对象来访问 2. 非静态成员开辟空间, 是在这个对象被实例化的时候开辟的 1. 静态方法中, 不能直接访问非静态成员 2. 在非静态的方法中, 可以直接访问静态的成员 ```java class Person { String name; static int a; void eat() {} static void sleep() {} } class Program { public static void main(String[] args) { Person xiaoming = new Person(); // 访问非静态成员 xiaoming.name = "xiaoming"; xiaoming.eat(); // 访问静态成员 Person.a = 10; Person.sleep(); // 注: // 访问静态的成员, 也可以使用对象来访问, 但是会有警告 // 推荐使用类来访问静态成员 } } ``` #### 1.6.6 类是一种自定义的类型 #### 1.6.7 this关键字 > this: 在程序中,代表对当前对象的引用。 > > 当前对象: > > this关键字是需要用在某一个非静态方法中。 > > 非静态方法需要用对象来访问,哪个对象调用了这个方法,this就是谁 > this关键字可以被省略: > > 在类中访问当前的非静态的成员,可以省略掉this > > 但是有一种情况不能省略: > > ```java > public class Person { > String name; > int age; > char gender; > > void setInfo(String name, int age, char gender) { > // 就近原则 > this.name = name; > this.age = age; > this.gender = gender; > } > } > ``` |
|
来自: 好程序员IT > 《Java培训教程》