【狂神说Java】学习笔记15:面向对象编程(上)

【狂神说Java】学习笔记15:面向对象编程

[01] 初识面向对象

[02] 方法回顾和加深

[03] 对象的创建分析

[04] 面向对象三大特征(重点)

[05] 抽象类和接口

[06] 内部类和OOP实战

--------------------------------------------------------------------

面向对象编程

image


[01] 初识面向对象

属性加方法就是类。

面向过程思维:是一个线性思维,第一步做什么,第二部做什么,步骤明确。

面向对象思维:分类的思维方式。统筹各个部门做什么。

比如一个人可做事情,其中一个上厕所就属于方法,调用方法就去上厕所,具体怎么上就是面向过程一步步走了。

宏观把握,处理复杂的多人协作事务 →→→ 面向对象

具体到微观操作,具体思路细节的分析 →→→ 面向过程

image


什么是面向对象

面向对象编程本质:以类的方式组织代码,以对象的组织(封装)数据。 ←重要

三大特性

封装:用麻袋把小球装起来,然后留个口(接口)去拿取(调用)。

继承:子类继承父类的东西。

多态:同一个事物的多种形态。跑步有人擅长,有人不能跑。

image


[02] 方法回顾和加深

方法的定义

image

方法的基础概念,修饰符,返回值类型等等

只要方法里实行到return,就代表这个方法结束了,以下的都不会运行了。

package oop.demo01;

import java.io.IOException;

// 方法的基础概念,修饰符,返回值类型等等
    // Demo01 就是类(class)
public class Demo01 {
    // 核心方法-main方法。
    public static void main(String[] args) {
        //
    }

    /*
    修饰符 返回值类型 方法名(...){
        // 方法体
        return 返回值;
    }
     */
    public String sayHello(){
        return "hello,world";
    }
    // void 的话可以不写返回,或者只写个return即可返回空值
    // return 结束方法,并返回一个结果。
    public void hello(){
        return;
    }

    // 比大小的方法,int a和int b是形式参数,别人可以传进来调用。
    public int max(int a,int b){
        return a>b? a : b ; //三元运算符!a>b的话返回a,否则返回b
    }

    // 异常处理例子。读文件方法抛出throws  读写的异常IOException,
    public void readFile(String file) throws IOException{

    }
}


方法的调用

以下5个内容。

image

静态方法和非静态方法

I 方法的调用分两种:
1.静态方法
方法上加了static,可以直接调用。
2.非静态方法
没加static,实例化之后才能调用。

image


II.拓展延伸:静态方法里不能调用非静态方法。必须非静态方法实例化之后才行。

image


形参和实参

package oop.demo01;

public class Demo03 {
    public static void main(String[] args) {
        // 形参和实参的认识。本实例中实参1和2,形参a和b,且实际参数和形式参数的类型要对应。
        //  调用 加方法 ,并输出结果。
        int add = Demo03.add(1, 2);
        System.out.println(add);
    }
        //  加方法,返回int类型的a和b的值。
    public static int add(int a,int b){
        return a+b;
    }
}
----------------------
3

值传递和引用传递

值传递:java里都是值传递。

image

引用传递 :传递的是对象,本质还是值传递

package oop.demo01;

public class Demo05 {
    //  1.引用传递:传递的是对象,本质还是值传递
    public static void main(String[] args) {
        Person person = new Person();   //3.实例化Person
        System.out.println(person.name);    // 4.此时什么都没,默认值是null

        Demo05.change(person);      //6.实行类里的change方法,并把参数person传进去。
        System.out.println(person.name);    //7.此时正常输出Alvin名字。
    }
    //5.设定change名字的方法。
    public static void change(Person person){
        //8.person是一个对象,指向的是 →→→ Person person = new Person();这个具体的人,可以改变属性。
        person.name="Alvin";
    }

}
//上面那个是public class(一个类里只能有一个),下面是新建的class(可有好几个)。
//2.定义一个Person类,有一个属性name
class Person{
    String name;
}
----------------------------------------------------
null
Alvin

this关键字

this关键字是代表当前的类和当前的对象。

回头放到继承多态里说。

【疑问总结】

a.为什么开发的时候不是直接写好静态方法呢?这样调用更简单。
b.为什么要实例化才可以用?实例化到底做了什么?
c.静态方法是(类名.方法名),非静态方法是(对象名.方法名),有什么区别。
d:引用传递的时候传递的对象到底是什么?和内存的关系是什么? (对象和内存回头重点讲)

posted @ 2021-06-21 00:00  金城麻吉  阅读(213)  评论(0编辑  收藏  举报