2019-12-09
JAVAEE 好程序员 Java培训
好程序员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;
> }
> }
> ```
上一篇:实用的大数据之数组
下一篇:大数据实用教程之面向对象进阶
开班时间:2021-04-12(深圳)
开班盛况开班时间:2021-05-17(北京)
开班盛况开班时间:2021-03-22(杭州)
开班盛况开班时间:2021-04-26(北京)
开班盛况开班时间:2021-05-10(北京)
开班盛况开班时间:2021-02-22(北京)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2020-09-21(上海)
开班盛况开班时间:2021-07-12(北京)
预约报名开班时间:2019-07-22(北京)
开班盛况Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号