当前位置: 首页 / 技术干货 / 正文
Java面向对象与面向过程

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;

> }

> }

> ```

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号