【JAVASE】类与对象 上

简介: 【JAVASE】类与对象

1. 面向对象


1.1 什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。


面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。


1.2 面向对象与面向过程

举个例子说明一下:


传统的洗衣方式,需要我们亲力亲为,准备一盆水 --> 放衣服 --> 放洗衣粉 --> 洗衣服 --> 换水 --> 拧干 --> 晾衣服,过程很多,少了一个环节可能都不行。


如果按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。


现代洗衣方式以面向对象方式来进行处理,就不关注洗衣服的过程。

具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。


🍩面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景


2. 类的定义与使用


2.1 简单认识类

类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。


比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。

属性:产品品牌,型号,产品重量,外观尺寸,颜色…

功能:洗衣,烘干、定时…


在Java语言中,如何对上述的洗衣机类来进行定义呢?


2.2 类的定义格式

在 java 中定义类时需要用到 class 关键字,具体语法如下:

// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}

class 为定义类的关键字,ClassName 为类的名字,{} 中为类的主体。


类中包含的内容称为类的成员。

属性主要是用来描述类的,称之为类的成员属性或者类成员变量。

方法主要说明类具有哪些功能,称为类的成员方法。


class WashMachine{
    public String brand; // 品牌
    public String type; // 型号
    public double weight; // 重量
    public double length; // 长
    public double width; // 宽
    public double height; // 高
    public String color; // 颜色
    public void washClothes(){ // 洗衣服
        System.out.println("洗衣功能");
    }
    public void dryClothes(){ // 脱水
        System.out.println("脱水功能");
    }
    public void setTime(){ // 定时
        System.out.println("定时功能");
    }
}

采用 Java 语言将洗衣机类在计算机中定义完成,经过 javac 编译之后形成 .class 文件,在 JVM 的基础上计算机就可以识别了。


注:


  • 类名注意采用大驼峰定义
  • 成员前写法统一为public
  • 此处写的方法不带 static 关键字

实例:定义一个 小狗 类

80dca79ec4e0199b1d522b68b3eccbf1_86424fe0148f4d7590faa898ae68e1ed.png


class PetDog {
  public String name;//名字
  public String color;//颜色
  // 狗的属性
  public void barks() {
  System.out.println(name + ": 旺旺旺~~~");
  }
  // 狗的行为
  public void wag() {
  System.out.println(name + ": 摇尾巴~~~");
  }
}

实例2:定义一个 学生 类


65f25fe02f30c9c517f90cc6c9f4e2fc_64c6013dfcb1487281031b8118154ae5.png


public class Student{
  //属性
  public String name;//姓名
  public String gender;//性别
  public short age;//年龄
  public double score;//学分
  //方法
  public void DoClass(){}//上课
  public void DoHomework(){}//写作业
  public void Exam(){}//考试
}

注:


  • 一般一个文件当中只定义一个类
  • main 方法所在的类一般要使用 public 修饰(注意:Eclipse默认会在 public 修饰的类中找 main 方法)
  • public 修饰的类必须要和文件名相同
  • 不要轻易去修改 public 修饰的类的名称


3. 类的实例化


3.1 什么是实例化


定义了一个类,就相当于在计算机中定义了一种新的类型,与 int,double 类似,只不过 int 和 double 是 java 语言自带的内置类型,而类是用户自定义了一个新的类型,比如上述的: PetDog 类和 Student 类。

它们都是类(一种新定义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。


用 类 类型创建对象的过程,称为类的实例化,在 java 中采用 new 关键字,配合类名来实例化对象。


67ef7c86d14dc2d1c5640f1cebc74629_0a40c550063d455fa8d5336e51284556.png


public class oop {
        public static void main(String[] args) {
            PetDog dogh = new PetDog(); //通过new实例化对象
            dogh.name = "Jack";
            dogh.color = "黑色";
            dogh.barks();
            dogh.wag();
            PetDog dogs = new PetDog();
            dogs.name = "Peter";
            dogs.color = "棕色";
            dogs.barks();
            dogs.wag();
        }
}
class PetDog {
    // 狗的属性
    public String name;//名字
    public String color;//颜色
    //狗的行为
    public void barks() {
        System.out.println(name + ": 旺旺旺~~~");
    }
    public void wag() {
        System.out.println(name + ": 摇尾巴~~~");
    }
}

🍤 运行结果:

8fe3095e44cc1368e44dfdbb356a3633_cb7d6d650bed4e9cb335da1d041dab8a.png


注:


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


3.2 类和对象说明


  • 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
  • 类是一种自定义的类型,可以用来定义变量
  • 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
  • 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

相关文章
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1014 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1709 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
652 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
618 12
|
10天前
|
人工智能 自然语言处理 API
Next AI Draw.io:当AI遇见Draw.io图表绘制
Next AI Draw.io 是一款融合AI与图表绘制的开源工具,基于Next.js实现,支持自然语言生成架构图、流程图等专业图表。集成多款主流大模型,提供智能绘图、图像识别优化、版本管理等功能,部署简单,安全可控,助力技术文档与系统设计高效创作。
689 151