当前位置: 首页 > news >正文

Java新手指南:从菜鸟到编程大师的趣味之路-类和对象

这里是Themberfue 

 本章主要介绍的是Java最重要的面向对象(OOP)的基础

 面向对象

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

        面向对象和面向过程的区别

                面向过程编程是一种基于过程(函数)的编程范式,程序通过一系列函数调用实现。它强调的是过程(过程就是一组指令或步骤),数据和函数是分离的。

                面向对象编程是一种基于对象的编程范式,程序由一组对象及其交互组成。每个对象包含数据和操作数据的函数(称为方法)。

举个例子:

                面向过程的例子 => 洗衣服的步骤 => 1. 收集脏衣服 2. 按颜色和材质分类 3. 将衣服放入洗衣盆 4. 加水 5. 加入洗衣粉.........

                面向对象的例子 => 使用洗衣机 => 1. 洗衣机 2. 洗涤程序

 类定义和使用

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

// 创建类
class ClassName{  field; // 字段(属性) 或者 成员变量method; // 行为 或者 成员方法
}
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("定时功能");}
}

        注意事项:

                1. 类名注意采用大驼峰定义

                2. 成员前写法统一为public,后面会详细解释

类的实例化

        定义了一个类,就相当于在计算机中定义了一种新的类型。用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

        用上面的例子来实例化对象

public class Main {public static void main(String[] args) {WashMachine washMachine = new WashMachine();washMachine.brand = "联想";washMachine.dryClothes();}
}

注意事项

        ·new 关键字用于创建一个对象的实例

        ·使用 . 来访问对象中的属性和方法

        ·同一个类可以创建多个实例

 this引用

        this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

class Date {public int year;public int month;public int day;public void setDay(int year, int month, int day){this.year = year;this.month = month;this.day = day;}
}

        this引用的特性

                ·this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

                ·this只能在"成员方法"中使用

                ·在"成员方法"中,this只能引用当前对象,不能再引用其他对象

对象的构造及初始化

        构造方法

                构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且 在整个对象的生命周期内只调用一次。

class Date {public int year;public int month;public int day;// 构造方法:// 名字与类名相同,没有返回值类型,设置为void也不行// 一般情况下使用public修饰// 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次public Date(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}
}

构造方法的特性:

        ·名字必须与类名相同

        ·没有返回值类型,设置为void也不行

        ·创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)

        ·构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)

        ·如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。

构造方法中,可以通过this调用其他构造方法来简化代码 

class Date {public int year;public int month;public int day;// 无参构造方法--内部给各个成员赋值初始值,该部分功能与三个参数的构造方法重复// 此处可以在无参构造方法中通过this调用带有三个参数的构造方法// 但是this(1900,1,1);必须是构造方法中第一条语句public Date(){//System.out.println(year);   注释取消掉,编译会失败this(1900, 1, 1);}public Date(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}
}

 封装

        面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。

        访问修饰限定符

                Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认 知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:

No范围privatedefaultprotectedpublic
1同一包中的同一类
2同一包中的不同类
3不同包的子类
4不同包的非子类

多说不易必自毙,剩下的自己去悟吧~~~

 static

        static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。

        这里我直接说特性,剩下的还是自己去悟吧😘😘😘

不属于某个具体的对象,是类方法

可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者

不能在静态方法中访问任何非静态成员变量

 今天的讲解就到这里,说实话,我这教程写的一般,正经人一般也不会看到这里吧😁👌

 

http://www.lryc.cn/news/418432.html

相关文章:

  • 计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战
  • LeetCode 3131.找出与数组相加的整数 I:最小值之差(多语言一行版)
  • Win32注册表操作
  • 白骑士的PyCharm教学高级篇 3.3 Web开发支持
  • SpringAOP-底层实现源码解析
  • 【C语言初阶】C语言操作符全攻略:提升编程效率的关键步骤
  • 2007-2023年上市公司金融化程度测算数据(含原始数据+计算代码+计算结果)
  • 【时时三省】(C语言基础)操作符
  • 常用API(三)
  • 内存管理问题总结
  • 十七、Intellij IDEA2022.1.1下载、安装、激活
  • 【Material-UI】Button Group 中的 Disabled Elevation 功能
  • Java RESTful API 测试:使用 RestAssured
  • 将nestjs项目迁移到阿里云函数
  • 边缘计算×AI:绘制未来实时智能的宏伟蓝图
  • 实现关系运算符的重载
  • 【css】使用CSS绘制奥运五环--巴黎奥运
  • 【Python数据处理】MatplotlibNumpyPandas常用API整理
  • Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心
  • 条形码与二维码报表
  • 数据采集工具之Flume
  • 【24年最新】AI大模型零基础入门到精通学习资料大全,学完你就是LLM大师!
  • 使用RabbitMQ死信交换机实现延迟消息
  • overleaf上latex表格的使用,latex绘制三线表
  • 聚焦光热型太阳光模拟器助力多晶硅均匀加热
  • 【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录
  • 前端开发:创建可拖动的固定位置 `<div>` 和自动隐藏悬浮按钮
  • Java Bean Validation 注解:@NotEmpty、@NotBlank 和 @NotNull 的区别
  • Java | Leetcode Java题解之第322题零钱兑换
  • Linux初启征程指南:攻克常见系统指令与权限初理解