【Java】终于可以给自己new对象了——Java类和对象(一)

简介: 【☕Java】,千呼万唤始出来,终于可以给自己new对象了——Java类和对象

🗽类与对象的初步认知

dca304ee9cb14c248ce704afaf677c4e.pngC语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

【面向过程】注重的是过程,在整个过程中所涉及的行为,就是功能。

【面向对象】注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来


面向过程: 1.把冰箱打开 2. 把大象放入 3. 冰箱关起来

面向对象: 打开冰箱,储存,关闭都是对冰箱的操作,是冰箱的行为。冰箱就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中


【面向对象概念】

1.面向对象是思考问题的一种思考方式,是一种思想。比如:概念与实例。理论与实践。名和实等等……

2.类就是一类对象的统称。对象就是这一类具体化的一个实例。
3.面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行。


【面向对象设计】

面向对象设计把握一个重要的经验:谁拥有数据,谁对外提供操作这些数据(私有)的方法!(被动的一方是数据的拥有者,主动的一方是执行者)
开发时:找对象,建对象,用对象,并维护对象之间的关系。

后期学习过程当中,我们会就这三点进行深入学习。
简而言之,面向对象就是用代码(类)来描述客观世界的事物的一种方式.
一个类主要包含一类事物的【属性】和【行为】

🗽类和类的实例化

类就是一类对象的统称。对象就是这一类具体化的一个实例。

简单的例子:我们做月饼的模子就是一个类,而通过这个模子可以做出月饼,那么在这个例子当中,类就是那个模子,而月饼就是那个对象,所以月饼就是一个实体。一个模子可以实例化无数个对象。

总的来说:类相当于一个模板,对象是由模板产生的样本。一个类,可以产生无数的对象。


一个模子可以实例化无数个对象。

总的来说:类相当于一个模板,对象是由模板产生的样本。一个类,可以产生无数的对象。

// 创建类
class <class_name>{  
   field;//成员属性
   method;//成员方法
}
// 实例化对象
<class_name> <对象名> = new <class_name>();

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
【类中的元素称为:成员属性】。【类中的函数称为:成员方法】。


示例如下:

class Person {
   public int age;//成员属性 实例变量
   public String name;
   public String sex;
   public void eat() {//成员方法
      System.out.println("吃饭!");  
   }
   public void sleep() {
      System.out.println("睡觉!");  
}

和之前写的方法不同, 此处写的方法不带 static 关键字. 后面会详细解释 static 是干啥的

🗽类的实例化

用类类型创建对象的过程,称为类的实例化

1. 类只是一个模型一样的东西,限定了类有哪些成员.

2. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量

3. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

5170d5dd25e64fe59051af7bfb92ca58.png

class Person {//类(人)
   public int age;//属性 
   public String name;
   public String sex;
 public void eat() {//成员方法
      System.out.println("吃饭!");  
  }
   public void sleep() {
      System.out.println("睡觉!");  
  }
}
public class Main{
public static void main(String[] args) {
       Person person = new Person();//通过new实例化对象
       person.eat();//成员方法调用需要通过对象的引用调用
       person.sleep();
       //产生对象     实例化对象
       Person person2 = new Person();
       Person person3 = new Person();
}
}

输出结果为:

吃饭!

睡觉!

注意事项

  • new 关键字用于创建一个对象的实例.
  • 使用 . 来访问对象中的属性和方法.
  • 同一个类可以创建对个实例.

🗽类的成员

类的成员可以包含以下:字段、方法、代码块、内部类和接口等。
此处我们重点介绍前三个.

⭐字段 / 属性 / 成员变量

在类中, 但是方法外部定义的变量. 这样的变量我们称为 “字段” 或 “属性” 或 “成员变量” (三种称呼都可以, 一般不会严格区分).用于描述一个类中包含哪些数据

class Person {
   public String name;   // 字段
   public int age; }
class Test {
   public static void main(String[] args) {
    Person person = new Person();
       System.out.println(person.name);
       System.out.println(person.age);
  }
}
// 执行结果
null
0

注意事项

  • 使用 【. 】访问对象的字段. “访问” 既包含读, 也包含写
  • 对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初值.

默认值规则

  • 对于成员变量, 不加public或者privat修饰默认public修饰.
  • 对于各种数字类型, 默认值为 0.
  • 对于 boolean 类型, 默认值为 false.
  • 对于引用类型(String, Array, 以及自定制类), 默认值为 null

认识 null

null 在 Java 中为 “空引用”, 表示不引用任何对象. 类似于 C 语言中的空指针. 如果对 null 进行 . 操作就会引发异常.

class Person {
   public String name;
   public int age; }
class Test {
   public static void main(String[] args) {
       Person person = new Person();
       System.out.println(person.name.length());   // 获取字符串长度
  }
}
// 执行结果
Exception in thread "main" java.lang.NullPointerException
       at Test.main(Test.java:9)

字段就地初始化

很多时候我们不希望字段使用默认值, 而是需要我们显式设定初值. 可以这样写:

class Person {
   public String name = "张三";
   public int age = 18; }
class Test {
   public static void main(String[] args) {
       Person person = new Person();
       System.out.println(person.name);
       System.out.println(person.age);
  }
}
// 执行结果
张三
18


相关文章
|
8月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1037 157
|
9月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
486 101
|
9月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
384 100
|
10月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
642 143
|
8月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
364 4
|
8月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
385 5
|
8月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
475 5
|
8月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
412 1
|
8月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
519 1
|
8月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
334 0