面向对象一

 

一、面向过程 & 面向对象

  1. 面向对象思想

    • 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的的思索。

    • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

  2. 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

  3. 面向过程的思想

    • 步骤清晰简单,第一步做什么,第二步做什么......

    • 面向过程适合处理一些较为简单的问题

二、什么是面向对象

  1. 面向对象编程(Object-Oriented Programming,OOP)

  2. 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

  3. 抽象

  4. 三大特性:

    • 封装

    • 继承

    • 多态

  5. 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类是抽象的,是对对象的抽象。

  6. 从代码运行的角度考虑是现有类后有对象。类是对象的模板。

三、类与对象的关系

  1. 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一具体事物。

    • 动物、植物、手机、电脑......

    • Person类、Pet类、Car类等、这些都是用来描述/定义某一类具体的事物应该具备的特点和行为。

  2. 对象是抽象概念的具体实列

    • 张三就是人的一个具体实列,张三家里的旺财就是狗的一个具体实例。

    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象概念。

    • 我们可以将这些思想转换为代码实现!

四、创建与初始化对象

  1. 使用new关键字创建对象

  2. 使用new关键字创建的时候,除了分配内存空间之外,还会给创造好的对象进行默认的初始化以及对类中构造器的调用

  3. 类中的构造器也称构造方法,是在进行创建对象的时候必须调用的。并且构造器有以下两个特点:

    • 必须和类的名字相同

    • 必须没没有返回值,也不能写void(数据类型)

  4. 案例:学生类

    //学生类
    public class Student {
    
       //属性:字段
       String name;
       int age;
    
       //方法
       public void study(){
           System.out.println(this.name+"同学在说话");
       }
    
    }
    public static void main(String[] args) {
    
           //类:抽象的,实例化
           //类实例化之后会返回一个自己的对象!
           //student对象就是一个Stydent类的具体实例
           Student s = new Student();
           Student xh = new Student();
    
           System.out.println(s.name);
           System.out.println(s.age);
           s.study();
    
           System.out.println("====================");
           s.name = "小明";
           s.age = 16;
    
           xh.name = "小红";
           xh.age = 15;
    
           System.out.println(s.name);
           System.out.println(s.age);
           s.study();
    
           System.out.println("====================");
           System.out.println(xh.name);
           System.out.println(xh.age);
           xh.study();
    }

     

五、注意:

  1. 一个类即使什么也不写,它也会存在一个方法(隐式)

  2. 一旦定义了有参构造就必须,无参构造就必须显示定义

  3. 一个项目只应该存在应该main方法

  4. 使用new关键字,本质就是在调用构造器(实例化初始值)

六、内存分析

public class Pet {
    String name;
    int age;

    public void shout(){
        System.out.println(this.name+"叫了一声!");
    }

    public Pet() {
    }

    public Pet(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public static void main(String[] args) {

        Pet dog = new Pet("边牧",3);

        System.out.println(dog.name);
        System.out.println(dog.age);
        dog.shout();

        System.out.println("====================================");

        Pet cat = new Pet();

        cat.name = "缅甸猫";
        cat.age = 2;

        System.out.println(cat.name);
        System.out.println(cat.age);
        dog.shout();
    }

   

 

 

七、小结

  1. 类与对象

    • 类是一个模板:抽象

    • 对象是一个具体的实例

  2. 方法

    • 定义

    • 调用

  3. 对应的类型

    • 基本类型(共有8个)

    • 引用类型(对象是通过引用来操作的:栈--->堆)

  4. 属性(字段\Field\成员变量)

    • 默认初始化

      • 数字: 0 0.0

      • char: u0000

      • boolean: false

      • 引用: null

    • 格式:

      • 修饰符 属性类型 属性名 = 属性值
  5. 对象的创建和使用

    • 必须使用new 关键字创建对象,构造器        Person kaungshen = new Person();

    • 对象的属性调用:kuangshen.name

    • 对象的方法调用:kaungshen.sleep()

  6. 类:

    • 静态的属性    属性

    • 动态的行为 方法

posted on   ahssmy  阅读(5)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示