面向对象01[什么是面向对象、回顾方法的定义、调用]

本文深入解读了面向对象编程(OOP)的概念,包括面向过程与面向对象的区别、抽象的三大特性(封装、继承、多态),以及方法的定义、调用。通过实例演示了静态方法与非静态方法、值传递与引用传递。重点在于面向对象如何解决复杂问题和团队协作,并结合代码实例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是面向对象?

面向过程&面向对象

  • 面向过程思想
    • 步骤清晰简单,第一步做什么,第二步做什么…
    • 面向过程适合处理一些较为简单的问题
  • 面向对象思想
    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要那些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
    • 面向对象适合处理复杂问题,适合处理需要多人协作的问题!
  • 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

面向对象编程(Object-Oriented Programming,简称OOP)

  • 面向对象编程的本质
    • 以类的方式组织代码,以对象的方式组织(封装)数据.
  • 抽象
  • 三大特性
    • 封装
    • 继承
    • 多态
  • 从认识论角度考虑是先有对象后有类。对象是具体的事物,类是抽象的,是对对象的抽象

  • 从代码运行角度考虑是先有类后有对象。类是对象的模板。


2.方法的定义、调用(回顾加深)

根据以下知识点对前面所学方法的定义调用进行全面回顾和加深

  • 方法的定义

    • 修饰符
    • 返回值类型
    • break 和 return 的区别
    • 方法名
    • 参数列表
    • 异常抛出(后面会学,先留作疑问)
  • 方法的调用

    • 静态方法
    • 非静态方法
    • 形参和实参
    • 值传递和引用传递
    • this关键字(后面继承和多态里去讲)

代码实现(回顾):
1.方法定义的相关内容

package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 9:27
 */
public class Demo01 {
    /**
     * 上面的Demo01为 类
     * 下面main为 主方法  程序的入口
     */
    public static void main(String[] args) {
    }

    /**
     * 修饰符 返回值类型 方法名(参数类型 参数名){
     *      //方法体
     *      return 返回值;
     * }
     *
     * 下面演示中有的没写方法体,只是让我们要道当一个方法具有非空返回值类型时,它必须return一个值!
     * return   结束方法,并返回一个值,因此return语句后面不能再写任何语句!
     */
    public String sayHello(){
        return "Hello,world!";
    }
    public static int getMax(int a,int b){

        int max;
        if (a==b){
            System.out.println("num1==num2");
        }
        if (a>b){
            max = a;
        }else {
            max = b;
        }
        return max;
        //三运运算符  return a>b ? a : b;
    }
}

2.不能用静态方法去调非静态方法(存在的调用不存在的)

package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 10:31
 */
public class Demo02 {
    public static void main(String[] args) {
        //非静态方法不能直接调用     要实例化这个类 new
        Student student = new Student();
        student.say();
    }
    /**
     * 静态方法是和类一起加载的
     */
    public static void a(){
        // b();不能调用方法b
        // 因此一个已经存在的静态方法是无法调到一个不存在的非静态方法
    }
    /**
     * 而非静态方法在类实例化(new)之后才存在
     */
    public void b(){

    }
}
package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 10:37
 */
public class Student {
    /**
     * 非静态方法
     * */
    public void say(){
        System.out.println("很多学生在说话");
    }
}

3.非静态方法的调用

package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 11:27
 */
public class Demo03 {
    public static void main(String[] args) {
        //非静态方法 先将其所在的类实例化(即定义类的对象),然后通过 对象名.方法名(实参列表) 调用
        //静态方法 直接通过 类名.方法名(实参列表) 调用
        Demo03 demo03 = new Demo03();
        //赋值调用
        int add = demo03.add(1, 2);
        //打印输出
        System.out.println(add);
    }
    public int add(int a,int b){
        return a+b;
    }
}

4.值传递

package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 12:19
 */
public class Demo04 {
    /**
     * 值传递
     */
    public static void main(String[] args) {
        int a = 1;
        //1
        System.out.println(a);

        change(a);
        //1
        System.out.println(a);
    }
    /**
     * 返回值为空
     */
    public static void change(int a){
        a = 10;
    }
}

5.引用传递

package com.oop.demo01;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/28 12:23
 */
public class Demo05 {
    /**
     * 引用传递:对象,本质还是值传递
     */
    public static void main(String[] args) {
        Person person = new Person();
        //null
        System.out.println(person.name);

        Demo05.change1(person);
        //若梦
        System.out.println(person.name);
    }
    public static void change1(Person person){
        //person是一个对象:指向的是 Person person = new Person; 这是一个具体的人,可以改变属性!
        person.name = "若梦";
    }
}
/**
 * 定义一个Person类,有一个属性:name
 */
class Person{
    /**
     * 默认为null
     */
    String name;
}

如果我的博客对你有一点点帮助,望请大侠可以给文章点个赞再走,你们的鼓励将是我创作优质内容的动力!

声明:因个人能力有限,博文中必有不足之处,望学术同仁不吝赐教!一起学习一起进步!
以上内容均为原创,转载请注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值