【Java SE】类和对象(上)

这篇具有很好参考价值的文章主要介绍了【Java SE】类和对象(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一. 面向对象的初步认知

1.1 什么是面向对象

1.2 面向对象与面向过程

二. 类定义和使用

2.1 简单认识类

 2.2 类的定义格式

三. 类的实例化 

3.1 什么是实例化 

3.2 实例化对象 

四. this引用(重点)

 4.1 为什么要有this引用

 4.2 this的使用

4.3 this引用的特性

五.对象的构造及初始化 

5.1 默认初始化

5.2 就地初始化

​编辑

5.3 构造方法(重点)

总结:  


本篇文章为JavaSE中的重点内容 希望大家好好看看

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象


 一. 面向对象的初步认知

1.1 什么是面向对象

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

1.2 面向对象与面向过程

举例说明面向对象与面向过程的区别:

面向过程:

传统洗衣服过程

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

传统的方式:注重的是洗衣服的过程,少了一个环节可能都不行。 这就是面向过程 

C语言就是面向过程的语言

 面向对象:

现代洗衣服过程:

整个洗衣服过程:人把衣服放进洗衣机,倒入洗衣粉到洗衣机,启动洗衣机。衣服便总动洗好

总共分为四步,整个过程都是由这四个对象交互完成,不需要管它如何实现洗衣服这些过程,更注重结果

总共四个对象:人,衣服,洗衣机,洗衣服

面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。


二. 类定义和使用

2.1 简单认识类

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

 例如:

比如:洗衣机,它是一个品牌,在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("定时功能");
 }
}

再定义一个狗类:

class Dog {
    public String name;
    public String color;
    public int age;

    public void eat() {
        System.out.println(name + "吃东西");
    }
    
    public void wag() {
        System.out.println(name + "摇尾巴");
    }
}

注意事项:

  • 类名注意采用大驼峰定义
  • 成员前写法统一为public
  • 此处写的方法不带 static 关键字
  • 一般一个文件当中只定义一个类
  • public修饰的类必须要和文件名相同
  • public修饰的类必须要和文件名相同

三. 类的实例化 

3.1 什么是实例化 

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

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

3.2 实例化对象 

拿上处狗的例子来举例:

 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

这样我们就通过new 来创建了一个dog对象,并且对它可以实例化对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

通过. 可以通过类对象访问到它里面的对象 ,并且可以对它初始化

 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

注意事项:

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

类和对象的说明:

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

 习题:

1.引用可以指向-引用吗?

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

解析:不能。引用只能指向对象

只能这样说,dog2指向了dog1所指向的对象

2.一个引用 能不能同时指向 多个对象吗?

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

解析:不行的 dog1这个引用,只能存储一个对象 

3.dog1指向了null对象?

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

解析:错误 ,dog1不指向任何对象 

实现俩个数字的交换(重点)

class myValue1 {
    public int val;
}
class myValue2 {
    public int val;
}

public class Test {
    public static void swap(myValue1 val1,myValue2 val2) {
        int tmp = val1.val;
        val1.val = val2.val;;
        val2.val = tmp;
    }
    public static void main(String[] args) {
        myValue1 val1 = new myValue1();
        val1.val = 10;
        myValue2 val2 = new myValue2();
        val2.val = 20;
        System.out.println("交换前");
        System.out.println(val1.val);
        System.out.println(val2.val);
        swap(val1,val2);
        System.out.println("交换后");
        System.out.println(val1.val);
        System.out.println(val2.val);
  }
}

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象  

注意基本类型一定不能进行交换,一定要通过引用访问它们中的对象,从地址上改变了它们的对象


四. this引用(重点)

 4.1 为什么要有this引用

引用一个例子就明白了:

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

    public void setDate(int y,int m,int d) {
        year = y;
        month = m;
        day = d;
    }
    public void printDate() {
        System.out.println( year + "年" + month + "月" + day + "日 ");
    }
    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(2023,11,11);
        date.printDate();
    }
}

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

这里是成功打印出来了,而现在我稍作一点改变 ,就会发生错误


 原来:【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

 现在:形参名不小心与成员变量名相同【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

 再来看看打印结果

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

只是修改了变量名字,为什么就打印不出来

原因是【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

这里都使用了局部变量,并没有赋值到

局部变量优先使用

接下来就可以使用this 这个方法


 4.2 this的使用

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

 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象


即使写了很多个,系统都可以自动识别出 :

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

this引用的是调用成员方法的对象。


4.3 this引用的特性

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

五.对象的构造及初始化 

5.1 默认初始化

为什么局部变量在使用时必须要初始化,而成员变量可以不用呢?

在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面简单介绍下:
1. 检测对象对应的类是否加载了,如果没有加载则加载
2. 为对象分配内存空间
3. 处理并发安全问题
比如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突

4. 初始化所分配的空间
即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值

 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

 所以它们都有默认值

5.2 就地初始化

 在声明成员变量时,就直接给出了初始值。【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象


5.3 构造方法(重点)

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

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象 【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

构造方法的调用 是在实例化对象的时候

之前没有构造的方法,也会被执行,只不过是不带任何参数的

构造方法至少有一个,Java会自带一个不带任何参数的


【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

名字相同,参数列表不同,因此构成了方法重载。 

这里就可以对成员变量进行初始化


假如只写了一个构造方法:

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

假如你创建了一个带参数的构造方法,但这里却调用不带参数的构造方法,就会报错,因为必须使用你创建了那个构造方法,如果没写构造方法,才可以写不带参数的。 

 这里由一个编写构造方法的快捷方法,就不用一个一个输入:

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

【Java SE】类和对象(上),JavaSE,java,开发语言,类和对象

或者直接用快捷键alt+insert 想创建几个就可以创建几个

总结:  

明天更新 【Java SE】封装

如有不足之处欢迎补充交流

看到这里的友友们,支持一下博主,来个免费三连,感谢! ! !文章来源地址https://www.toymoban.com/news/detail-768956.html

到了这里,关于【Java SE】类和对象(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初始Java篇(JavaSE基础语法)(5)(类和对象(上))

    个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 面向对象的初步认知 面向对象与面向过程的区别 类的定义和使用  类的定义格式 类的实例化 this引用 什么是this引用? this引用的特性 对象的构造及初始化 如何初始化对象(的

    2024年04月08日
    浏览(48)
  • 【Java SE语法篇】9.抽象类和接口

    📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 在面向对象的概念中,所有的对象都是通过类来描绘的,但是放过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的

    2024年01月19日
    浏览(52)
  • 【JavaSE语法】类和对象(一)

    1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称 OOP ),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要 依靠对象之间的交互完成一件事情 1.2 面向对象与面向过程 注意:面向过程和面相对象并不是一门语言,而是解决问

    2024年02月05日
    浏览(40)
  • 【JavaSE】类和对象详解(下)

    面向对象程序的三大特性:封装、继承、多态~ 书接上回 类和对象(上)~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 封装 private public 快速生成可访问封装的方法 包 导包 通过import导包 模糊导入* 特殊举例 建包 static 静态成员变量 ​

    2024年04月09日
    浏览(40)
  • Java SE:面向对象(下)

    静态区的特点:静态区里面的每一样东西都是唯一有且仅有一个的,如此时str1 = \\\"abc\\\"即此时静态区里面已经创建了字符串abc并将abc地址赋给str1,后面在进行赋值也不会在静态区开辟一串新的\\\"abc\\\"    区分: 一个类的成员有static修饰的成员存储在静态区,statci修饰的成员一旦被

    2024年01月25日
    浏览(53)
  • 【JavaSE】基础笔记 - 类和对象(下)

      目录 1、this引用 1.1、为什么要有this引用 1.2、什么是this引用 1.3、 this引用的特性 2、 对象的构造及初始化 2.1、 如何初始化对象 2.2、构造方法 2.2.1、概念   2.2.2、特性  2.3、默认初始化  2.4、就地初始化   上篇: 【JavaSE】基础笔记 - 类和对象(上)-CSDN博客 https://blo

    2024年02月04日
    浏览(51)
  • 【JavaSE】基础笔记 - 类和对象(上)

      目录 1、面向对象的初步认知 1.1、什么是面向对象 1.2、面向对象与面向过程  2. 类定义和使用 2.1、简单认识类 2.2、类的定义格式 2.3、自定义类举例说明 2.3.1、定义一个狗类  2.3.2、定义一个学生类 3、类的实例化 3.1、什么是实例化 3.2、类和对象的说明   Java是一门 纯面向

    2024年02月05日
    浏览(50)
  • JAVA SE基础《八》 ---- 面对对象编程

    目录 一、面向对象编程快速入门 二、深刻认识面向对象 三、对象在计算机中的执行原理 四、类和对象的一些注意事项 五、其他语法:this 六、其他语法:构造器 七、其他语法:封装 八、其他语法:实体JavaBean 九、面向对象编程综合案例 十、补充知识:成员变量、局部变量

    2024年02月14日
    浏览(41)
  • 【javaSE】内部类(来自类和对象的补充)

    hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥💥,如果发现这篇文章有问题的话,欢迎各位评论留言指正,大家一起加油!一起chin up!👍👍  💥 个人主页 :E绵绵的博客 💥 所属专栏: JAVASE题目练习

    2024年04月27日
    浏览(31)
  • 【手把手带你学JavaSE】第六篇:类和对象

    对了!给大家推荐一个刷题学习、面试神器——牛客网 里面有非常多的题库,跟面试经验~非常的良心!! 什么是类? 什么是对象? 怎么去理解这两个抽象的概念呢? Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。 面向对象

    2023年04月20日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包