Java基础--认识类和对象

1.什么是类

  • 具有相同属性和方法的一组对象的集合

  • 类是概念

    • 从拥有同样的属性和方法的事物中抽象出来的概念

  • 类是模板

    • 通过类创造出来的对象具有类规定的属性和方法

2.什么是对象

  • 对象是实体

    • 拥有类指定的属性和方法的客观存在

  • 类和对象的关系

    • 类是对象的抽象,对象是类的具体(实例化)

    • 类是模板,确定对象将会拥有的属性和方法

    • 类是对象的类型

      • 引用数据类型

      • 和基本数据类型不同,需要使用new关键字创建对象

    • 一个类可以有很多对象,通过模板我们可以创建出很多的实例。

3.什么是面向对象

  • 面向对象是一种编程思想,java是一门面向对象的编程语言

  • 面向过程是将解决问题的方法分成一步一步去执行

  • 面向对象是把解决问题看作一个对象的能力

4.如何使用类和对象

  • 创建类

    • 从需求出发,抽象出类

    • public class Dog {
          //静态的特点——属性
          String color;//毛色
          String name;//名字
          int age;//年龄
      ​
          //动态的特点——方法
          public void bark() {
              System.out.println("狗在汪汪叫!");
          }
      ​
      }

    • java是面向对象的编程语言,所有的代码都写在类中

    • 属性——事物的静态特征

      • 属性声明在类中,方法外,作用域是整个类,所以又叫全局变量

    • 方法——事物的动态特征

      • public void 方法名() {
            
        }

  • 创建对象

    • //类名 对象名 = new 类名()
      Dog dog = new Dog();

    • 可以把对象名看左一个变量名,把对象看成特殊的变量

    • Dog 是类型,dog是变量名/对象名

  • 使用对象

    • 因为类是一个概念,无法直接使用,需要通过类产生对象,然后使用对象的属性和方法

    • 对象名.属性

    • 对象名.方法()

    • dog.name = "大黄";
      dog.age = 3;
      dog.color = "黄色";
      ​
      System.out.println("我的小狗叫" + dog.name);
      dog.bark();//调用对象的方法

5.对象在内存中存储的方式

  • 类是一种数据类型,除了可以存储数据之外,还有一定的功能,调用方法解决问题。

  • 数组是存储一批相同数据类型的数据

  • 对象可以存储一批不同数据类型,但在意义上有关联的数据

  • 栈中存储对象的地址,堆中存储真正的对象,对象里面的每一个属性都是一个小格子,可以存储值。

  • 比较对象是否相等,不能使用==,给对象名赋值也不能使用=

  • 如果对象值为空(null)时,不能调用其属性和方法,不然会报”空指针"异常NullPointerException

    • 因此,比较字符串相等时,要把常量放在前面,因为变量值可能是null,如果是null调用equals方法会报空指针异常

      "123".equals(str);
  • //String类型的数组,可以存储一批字符串
    //int类型的数组,可以存储一批整数
    //想要存储一批信息,就使用User类型的数组——User类型的数组可以存储一批User
    User[] users = new User[99];
    System.out.println(users[0]);//null
    users[0] = new User();//实例化数组元素
    users[0].username = "sa";//users[0] 一定是实例化后才能使用,不然会报空指针异常
    System.out.println(users[0].username);

  • 和数组类似的:对象的属性未赋值也可以使用,会根据不同类型,生成不同的默认值

    • 整型 0;

    • 浮点型0.0;

    • 布尔 false

    • 字符 "\u0000"

    • 字符串等引用数据类型 null

  • 也可以手动给对象添加默认值

    • public class User {
          String username = "sa";    //账号
          String password = "111";    //密码
          int cardnum = 123;     //会员卡号
      }

6.成员变量和局部变量

  • 成员变量声明在类中,方法外,作用域是整个类;局部变量声明在方法中,作用域是它声明位置的大括号中

  • 成员变量未赋值可以使用它,局部变量未赋值不能使用

  • 成员变量和局部变量可以重名,局部变量优先级较高

  • 成员变量在new对象时就被创建并赋值,是先于方法的执行

7.补充

  • 封装:

    • 对象同时具有属性和方法两项特性

    • 对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割

  • 面向对象的优点:

  • 与人类的思维习惯一致

    • 把人类解决问题的思维过程转变为程序能够理解的过程

  • 信息隐藏,提高了程序的可维护性和安全性

    • 封装实现了模块化和信息隐藏

    • 封装使得在对象外部不能随意访问对象的属性和方法

  • 提高了程序的可重用性

    • 一个类可以创建多个对象实例,增加了重用性

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值