【初识Java之类和对象】

news2024/11/25 15:28:55

目录

  • 1.什么是面向对象
  • 2.类的定义和使用
    • 3.类的实例化
    • 3.1类的实例化
    • 3.2 类的引用
  • 4.This引用
  • 5.成员变量

1.什么是面向对象

ava是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

怎么才算是面向对象呢?
比如,我们要买一个手机,那我们就要先选手机,填写地址,购买,取快递,最后使用等一系列行为,那么这个过程我们就称之为面向过程。

但是,如果我们根别人说我要买手机,然后他就帮你买了,他帮你配置,你最后使用就可以了,其实这个就是面向对象。

面向对象就是不再关注过程,通过对象之间的交互来完成的

2.类的定义和使用

什么是类:
类是用来对一个实体(对象)用来描述的

那怎么定义类呢?或者说类的格式是怎么样的?

class Student
{
        属性/成员变量
        方法
}
class Person
{
    public int age;
    public String name;
    public String sex;
    public int high;
    public double weight;

    public  void run()
    {
        System.out.println("运动");
    }

    public  void sleep()
    {
        System.out.println("睡觉");
    }
}  

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

类中的内容称为类的成员,属性一般是描述类的,称为成员变量/类成员变量,方法主要是描述类具有哪些功能,称为类的成员方法。

注意:
1.类名需要采用大驼峰定义
2.成员变量/方法前,统一写为public,后面会写private
3.此处的方法不写static关键字

此处需要注意:
一个Java文件只能有一个public 类

一般来说,一个文件制义一个类
main方法所在的类一般要使用public来修饰
public修饰的类名一定要与文件名相同

3.类的实例化

3.1类的实例化

定义了一个类,就相当于在计算机中定义了一种新的类型。

用类类型创建对象的过程,就称为类的实例化
new 关键字用于创建一个对象的实例.
一个类可以实例化多个对象

Person person=new Person(); 引用 指向 对象

 //实例化一个对象
        //用类类型来创建对象的过程,称为实例化对象
        Person person=new Person();
        Person person1=new Person();
        Person person2=new Person();

那么我们怎么 调用类的变量/方法呢?

通过 对象.属性/方法,来访问对象中的属性和方法


class Person
{
    public int age;
    public String name;
    public String sex;
    public int high;
    public double weight;

    public  void run()
    {
        System.out.println("运动");
    }

    public  void sleep()
    {
        System.out.println("睡觉");
    }
}
public class Test {
    public static void main(String[] args) {


//        Person person1=new Person();
//        Person person2=new Person();
//        person1=person2;
//        代表person1这个引用,指向了,person2这个引用的指向的对象

        //不指向任何对象
        Person person1=null;
        //实例化一个对象
        //用类类型来创建对象的过程,称为实例化对象
        Person person=new Person();
        //通过 对象.属性来进行赋值
        person.age=10;
        person.name="zhangsan";
        person.high=175;
        person.run();
        System.out.println("age:"+person.age+" name:"+person.name);
        System.out.println();
    }


}

3.2 类的引用

1.当一个引用,赋值为null的时候,代表:这个引用不指向任何对象
2.引用能不能指向引用呢?
答案是:不能
只是代表,person1 这个引用 指向了 person2的这个引用 指向的对象

        Person person1=new Person();
        Person person2=new Person();
        person1=person2;
        //代表person1这个引用,指向了,person2这个引用的指向的对象

3.一个引用能不能指向多个对象
答案是:不能
一个引用只能指向一个对象,无论中间怎么指向其他的对象,最后还是会指向最后一个对象

public class Test {
    public static void main(String[] args) {
            Person person=new Person();
            person=new Person();
            person=new Person();
            person=new Person();
            person=new Person();
            person=new Person();
        }
}

4.This引用

class Date {
    public int year;
    public int month;
    public int day;

    public void setDay(int y, int m, int d) {
        year = y;
        month = m;
        day = d;
    }

    public void printDate() {
        System.out.println(year + "/" + month + "/" + day);
    }
}
public class Test3 {
    public static void main(String[] args) {
        // 构造三个日期类型的对象 d1 d2 d3
        Date d1 = new Date();
        Date d2 = new Date();
        Date d3 = new Date();
// 对d1,d2,d3的日期设置
        d1.setDay(2020,9,15);
        d2.setDay(2020,9,16);

        d3.setDay(2020,9,17);
// 打印日期中的内容
        d1.printDate();
        d2.printDate();
        d3.printDate();
    }
}

这个代码,看着乜有什么问题,但是细看的时候就会发现。

1.如果方形参的名称也为 year,month,day呢?
那他里面的那函数体中到底是谁给谁赋值?成员变量给成员变量?
参数给参数?参数给成员变量?成员变量参数?
2.当调用方法的时候,方法怎么知道是哪个对象调用的呢?
setDate和printDate函数如何知道打印的是那个对象的数据呢?

这个时候我们就要使用this这个引用了。

this引用指向当前的对象,在成员方法的所有变量的操作,都是通过该引用去访问的。
代表的是当前对象的引用

public void setDay(int year, int month, int day){
		this.year = year;
		this.month = month;
		this.day = day;
}
public void printDate(){
		System.out.println(this.year + "/" + this.month + "/" + this.day);
}

在这里插入图片描述
在这里插入图片描述
大家可以看到,这两个的值是一样的。代表着这个对象的引用是d1。

this引用的特性:

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在"成员方法"中使用
  3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
  4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收

this引用还可以
this.data :访问当前对象的成员变量
this.funct( ) :访问当前对象的成员方法
this():调用当前对象的其他的构造方法

这里给大家看一下怎么访问构造方法。

首先大家要知道,什么是构造方法?
构造方法 : 用来初始化对象的方法
(1) 构造方法名与类名相同 ,且没有返回值,且不需要使用void修饰 。
(2) 作用:在构造方法中为创建的对象初始化赋值,
(3) 在创建一个对象的时候,至少要调用一个构造方法,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
(4)每个类都有构造方法。如果没有显式地为类定义构造方法,Java将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。

构造方法一般来说是有类默认的,咱们不写的话一般是没有参数的。

class Date {
    public int year;
    public int month;
    public int day;


    public Date() {
        this(1111,22,33);
        System.out.println("没有参数的构造方法");

    }
    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("有三个参数的构造方法");
    }

    public void printDate() {
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }
}
public class Test3 {
    public static void main(String[] args) {
        // 构造三个日期类型的对象 d1 d2 d3
        Date d1 = new Date();
        Date d2 = new Date(2020,2,5);

        d1.printDate();
        d2.printDate();

    }
}

在这里插入图片描述

特性

  1. 名字必须与类名相同
  2. 没有返回值类型,设置为void也不行
  3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
  4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)

5.成员变量

局部变量:是在方法内部的
成员变量:定义在类内部,方法的外部
例如:
public int year;
public int month;
public int day;
这些都属于成员变量
在这里插入图片描述
这个就是一个局部变量

生命周期:
成员变量:对象创建出生,对象销毁就就结束
布局变量:进入方法内部创建,出方法就结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pandas 加载数据的方法和技巧

Pandas 加载数据的方法和技巧 哈喽大家好,我是咸鱼 相信小伙伴们在学习 python 数据分析的过程中或多或少都会听说或者使用过 pandas pandas 是 python 的一个拓展库,常用于数据分析 今天咸鱼将介绍几个关于 pandas 导入数据的方法和技巧 从 URL 获…

【JavaSE】Java基础语法(三十一):可变参数

文章目录 1. 可变参数2. 创建不可变集合 1. 可变参数 可变参数介绍 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了方法的参数类型已经确定,个数不确定,我们可以使用可变参数 可变参数定义格式修饰符 返回值类型 方法名(数…

【独立版】智慧城市同城V4_2.2.7全开源全插件VUE版,修复房产信息组件商户发布二手房房源信息未和商户关联的问题

源码介绍 【独立版】智慧城市同城V4 查看更多关于 智慧城市同城V4 的文章 _2.2.7全开源全插件VUE版,修复房产信息组件商户发布二手房房源信息未和商户关联的问题! 智慧城市同城是一套专注于多城市生活服务同城技术解决方案,全面覆盖同堿信息、商家联盟、…

端口扫描工具-Nmap

Nmap是一款功能强大,功能丰富的网络扫描工具,对于网络管理员和安全专业人员来说,是一个非常有用的工具,并且被广泛应用于安全审计、网络调查、漏洞搜寻等领域。 (能扫描主机的端口,查看端口是否开放&#x…

智慧物流货运系统源码,网络货运平台系统源码,货运系统开发源码部署

一套结合货主、平台、实际承运人多方业务场景,构建人、车、货、企一体的标准化网络货运平台系统源码。 文末获取联系 平台服务于货主与司机,进行服务对接,为货主节省时间找车,为司机找货获得利润。 货主端:货车主在线发…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

室内外大型商演、体育赛事观赏防雷指南

前言 随着社会的发展,人民生活水平的提高,生活方式的改变,户外颇具规模的各种集会、商演、大型文体及体育活动等举办频次越来越频繁,持续时间越来越长,有的集会持续数天甚至十几天,因此需要采取全方位的防…

DUMPBIN查看dll函数定义 及MFC常用 生成一个C# C++等任意语言都能调用的dll

DUMPBIN /EXPORTS "C:\Windows\System32\uxtheme.dll" /EXPORTS 导出的所有定义。(这里的定义应该就是指的函数名吧) dumpbin.exe是微软二进制文件转储器。显示有关通用对象文件格式 (COFF) 的二进制文件的信息。 可以使用 DUMPBIN 检查 COFF 对象文件、 COFF 对象、…

2023年上半年系统集成项目管理工程师上午真题及答案解析

1.在( )领域我国远末达到世界先进水平,需要发挥新型国家体制优势,集中政府和市场两方面的力量全力发展。 A.卫星导航 B.航天 C.集成电路 D.高铁 2.ChatGPT 于2022年11月30日发布,他是人工智能驱动( )。 …

NFTScan | 05.22~05.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.05.22 ~ 2023.05.28 NFT Hot News:NFT 热点资讯 01/ 数据:24 小时内两巨鲸共抛售 349 枚 MAYC NFT 5 月 22 日,Debank 数据显示,近 …

如何将数据从旧电脑传输到新电脑,哪种文件传输方式更好

迁移到新的Windows 10 电脑是一个令人兴奋的时刻,尤其是如果您有幸从我们现在可用的最佳Windows笔记本电脑列表中选择一个选项。问题是您熟悉的文件位于旧电脑上,并且您不想重新开始。为了简化电脑之间的转换,可以使用以下七种方式进行文件传…

Top大学教授:青年学者,请避免这些写作问题→

在科研初期,很多作者由于缺乏经验和指导,糊里糊涂地发了一些质量较低的论文。 为了帮助青年科学家提高写作能力,比利时鲁汶大学的Blocken教授(同时也是Building & Environment、Journal of Wind Engineering & Industrial…

Linux第三天

man手册一般用于工具 比如nmap lsblk :查看光盘内容 //说明还没被挂载 //在 /etc/fstab vim中进行开机挂载 yum repolist -v //查看软件安装的历史列表

【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 方法一 有源码…

Linux Shell 半自动方式部署单机Oracle 21C

oracle前言 Oracle开发的关系数据库产品因性能卓越而闻名,Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统,是世界最好的数据库产品。此外,Oracle公司还开发其他应用程序和软件。同时&#…

洗地机如何选购?洗地机十大名牌排行榜

洗地机是今年地面清洁领域热门的品类,如果你每天都要打扫家庭卫生的话,家里还有小孩子和有养宠物的话,如果你经常做饭,需要经常清洁厨房地面的话,那么你一定一定要配备一台洗地机在家里,它的高清洁力和便捷…

创新微MinewSemi厘米级定位精度的GNSS 模块—MS32SN4

近日,中国无线连接解决方案提供商MinewSemi推出了其GNSS模块系列-MS32SN4。MinewSemi表示,这些嵌入式模块为产品提供了一种易于使用、具有成本效益的解决方案,支持物联网(IoT)应用。 集成天线模块适用于消费者解决方案…

【TI毫米波雷达笔记】IWR6843AOPEVM-G的UniFlash烧录配置及避坑(官方手册有误)

【TI毫米波雷达笔记】IWR6843AOPEVM-G的UniFlash烧录配置及避坑(官方手册有误) 毫米波雷达有两种烧录方式: 搭配ICBOOST烧录雷达板自己烧录 搭配ICBOOST烧录时 需要配置为 MMWAVEICBOOST 模式 SOP都是下拉 而后通过 MMWAVEICBOOST 上的SO…

数据库基础——9.聚合函数

这篇文章来讲一下数据库中的聚合函数 目录 1. 聚合函数介绍 1.1 AVG和SUM函数 1.2 MIN和MAX函数 1.3 COUNT函数 2. GROUP BY 2.1 基本使用 2.2 使用多个列分组 2.3 GROUP BY中使用WITH ROLLUP 3. HAVING 3.1 基本使用 3.2 WHERE和HAVING的对比 4. SELECT的执…

Bugku CTF 矛盾 网站被黑

矛盾 打开链接,代码审计 使用get方式给num传参; 如果传入的不是数字,则会原样输出,比如我们传入abc 晃眼一看传入num等于1就可以输出flag,发现并不行 如果输入 注意,这里是两个等号 在php中&#xff0…