好程序员Java教程分享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;

> }

> }

> ```

你可能感兴趣的:(好程序员Java教程分享Java面向对象与面向过程)