类与对象详解

类与对象详解

面向对象

  • 面向对象与面向过程的区别
    • 面向过程围绕功能实现写代码, 具有比面向对象更高的性能,但代码耦合性高,不易维护,常用于嵌入式开发、操作系统内核、驱动程序等对性能能要求较高的开发
    • 面向对象按照现实世界的逻辑写程序,便于维护,具备较低的耦合性,程序拥有更长的生命周期。

类与对象的基本概念

- 类:对具有相同相似属性、行为的的一类事物的抽象信息描述,例如人、猫指的就是一个类
- 对象:具体的事物,例如具体的人(小王同学)就是一个对象。

类: 一类事物的描述

  • 语法:关键字 class
  • 格式:
/**
 * 类名必须首字母大写,遵循驼峰命名法
 * 变量、参数、方法名,遵循小驼峰命名法
 * public修饰的类必须与所在的文件名一致
 */
public class 类名{
    
}

类的结构

  • 成员:
    • 属性:
      • 格式 数据类型 属性名;
      • 例如:int age; String name;
    • 方法:
      • 格式 权限修饰符 返回值类型 方法名(参数列表)
      • 返回值:返回的数据,返回到方法的调用式上。
        • 无返回值:void 不需要return数据,但是可以通过return来结束方法执行
        • 有返回值:数据类型 需要return 数据,必须在方法可能会结束执行的地方
      • 参数:参数变量名在方法中是局部变量
        • 参数在调用时必须要传入参数值
        • 有参数 格式:参数类型 参数变量名(有多个参数时用逗号隔开)
        • 无参数 不需要写
        • 可以实现重载
          • 在一个类中可以有多个同名的方法,方法的参数的数量 类型 顺序不同
  • 范例:定义一个Student类

public class Student{
    String name;
    int id;
    //int score;
  /**
   * 输出学生的姓名和学号
   */
  public void display(){
        System.out.println("姓名:"+name+",学号:"+id);
    }
}

对象 类的一个实例

  • 创建对象:
    • 关键词:new
    • 格式: 类名 对象名 = new 类名();
  • 通过对象名来调用属性和方法
  • 范例:
public class Student {
    String name;
    int id;
    //int score;
    /**
     * 输出学生的姓名和学号
     */
    public void display(){
        System.out.println("姓名:"+name+",学号:"+id);
    }
    
    public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.id = 12345;
        stu1.name = "张三";
        stu1.display();
    }
}
  • 运行结果:姓名:张三,学号:12345

对象和对象名

  • 我们如何区去区分对象和对象名的概念呢?
    • 一句话概括:对象名保存着对象的地址。为了便于理解,我们看下面的问题:
    • 当我们执行stu1 = stu2操作时,系统会将stu2的属性的值赋给stu1吗?
    • 显然不会,因为stu1和stu2是对象名,保存着各自对象的地址,当发生stu1 = stu2操作时,stu1指向的对象地址赋给了stu2,相当于为stu2起了一个别名stu1。
  • 下面用代码进行验证:
public class Student {
    String name;
    int id;
    //int score;
    /**
     * 输出学生的姓名和学号
     */
    public void display(){
        System.out.println("姓名:"+name+",学号:"+id);
    }

    public static void main(String[] args) {
        Student stu1 = new Student();
        stu1.id = 1;
        stu1.name = "张三";
        Student stu2 = new Student();
        stu2.id = 2;
        stu2.name = "李四";
        //修改stu2的值,观察stu1是否也会变化;
        stu1 = stu2;
        stu2.name = "王五";
        stu1.display();
    }
}
  • 输出结果:姓名:王五,学号:2
  • 执行stu1 = stu2;操作后,我们修改stu2的值,发现stu1的值也发生了相同的变化,证毕。
posted @ 2022-03-19 09:11  classic123  阅读(107)  评论(0编辑  收藏  举报