day10_面向对象

news2024/12/4 16:33:43

今日内容

零、 复习昨日
一、this关键字
二、构造方法
三、重载

零、 复习昨日

1 类和对象是什么关系?

  • 类是模板,对象是实例
  • 对象是由类创建的

2 类中有什么?(类的成员)

  • 成员属性(成员变量)
  • 成员方法

3 创建对象的语法?

  • 类名 对象名 = new 类名();

4 调用对象属性的语法

  • 对象.属性

5 调用对象方法的语法

  • 对象.方法名()

6 画创建一个对象的内存图

7 成员变量和局部变量的区别

  • 位置
  • 使用范围
  • 初始化
  • 内存位置
    总结: 成员变量属于对象,局部变量属于方法

一、this关键字

this 是jdk提供的用来指代调用当前方法的对象的关键词,简化记忆: this就是当前类对象

作用:

  • this是对象,就可以调用属性和方法

总结最常用用法:

  • 当成员变量和局部变量重名时,用来特指成员变量!
package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @date 2024/1/26
 * @desc 汽车
 */
public class Car {

    double price;
    String brand;// 品牌

    /**
     * 成员变量和局部变量重名,允许
     *  为什么? 因为成员变量在内存堆中,局部变量在栈的方法中,并不在一起,所以不重复
     *
     * 当重名时,方法默认使用自己的局部变量(就近原则)
     *
     * 如果非要使用外部成员变量怎么办? java提供关键词,this
     *   this在方法内直接使用,this就代表调用这个方法 的对象
     *   (谁调用这个方法,this就是谁)
     *   this就可以调用属性和方法
     *   例如 this.brand this.price
     *        this.driver()
     */
    public void driver(int km){
        System.out.println("this:"+ this );
        double price = 390000;
        // this.price 调用的是成员变量
        System.out.println("一辆"+brand+",价值"+this.price+"元的车在开,行驶"+km+"公里" );
        // 演示this调用方法
        this.test();
    }


    public void test(){
        System.out.println("这是this调用执行的方法" );
    }
}

二、构造方法

2.1 无参构造

构造方法,又叫构造函数或者构造器, constructor

构造方法是干什么的?

  • 创建对象
  • 会给对象的属性初始化

构造方法在哪?

  • 就在每个类中,默认是隐藏的,看不见

构造方法如何定义?

  • public 类名(){
        
    }
    

构造方法的语法特点:

  • 虽然是方法,但是没有返回值,也没有void
  • 方法名必须是当前类名
  • 每个类中都默认隐式提供一个无参构造,也可以主动显式写出来
package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @date 2024/1/26
 * @desc 演示构造方法
 */
public class Student {

    int age;
    String name;

    /**
     * 构造方法每个类都有,默认隐藏的
     * 可以显式的写出
     */
    public Student(){
        // System.out.println("Student()无参构造执行..." );
        // age = 1;
        // name = "小王吧";
    }
    public void study(){
        System.out.println("学习" );
    }
}

总结:

无参就是默认的创建对象的方式,一般情况下它创建出的对象内的属性是默认值

2.2 有参构造

为什么有无参构造?

  • 是因为无参构造创建对象属性是默认值,还需要后续一个一个给属性赋值,有点麻烦
  • 此时,有没有一种情况,创建出对象,对象就被指定了属性值? 有,那就是有参构造!!!

有参构造,就是定义构造方法的时候,指定可以接收参数,给属性赋值,这样创建出对象,对象就被赋指定了属性值

public 类名(数据类型 变量名,...){
    属性 = 变量;
    ...
}

演示

package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @date 2024/1/26
 * @desc 演示构造方法
 */
public class Student {

    int age;
    String name;

    /**
     * 构造方法每个类都有,默认隐藏的
     * 可以显式的写出
     *
     */
    public Student(){
        // System.out.println("Student()无参构造执行..." );
        // age = 18;
        // name = "小王吧";
    }

    // 有参构造
    public Student(int age,String name){
        this.age = age;
        this.name = name;
    }

    public void study(){
        System.out.println("学习" );
    }
}

总结: 有参构造的好处,创建出对象,对象属性就有指定的值,方便一点

2.3 注意事项

  1. 如果没有提供任何一个,那每个类都有默认提供的是无参构造方法
  2. 可以显式写出有参,无参构造
  3. 但是一旦写出任何一个构造方法,默认的不再提供
  4. 有参无参构造 没有必须使用哪一个,自己看情况选择

2.4 练习

pdf5

2.5 补充this

this代表对象,可以调用属性,this.age ; 或者调用方法 this.work();

除此之外,this还可以调用构造方法.

语法

  • this(); 调用当前类(自己类)的无参构造
  • this(参数); 调用当前类(自己类)的有参构造

特殊的注意事项!!! -->

  • 构造方法中使用this调用构造方法的语句必须放在第一行

三、重载

重载Overload

指同一个类中 方法的设计方式.

哪种设计方式?

  • 方法名一样,但是参数列表不一样,以下任何一个不一样都算重载
    • 参数个数不一样
    • 顺序不一样
    • 类型不一样

image-20240126155421090

四、总结

重点就是 构造方法!!!

  • 构造方法作用
  • 有参无参区别
  • 写法上的注意事项
  • 创建对象时执行顺序

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

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

相关文章

CLion编辑器中文乱码

1.首先设置编码格式 都设置成utf-8 调整注册表 搜索regis

泽众云真机-机型集中化运维方案升级全面完成

2024年元月份,泽众云真机运维团队,经过几个月软硬件多轮安装调试,机型集中化运维方案升级全面完成。解决了云真机的机型集中化运维难题,方便了运营人员手机管理。 具体如下: 1、集中化运维,如服务器、PC、…

智能分析网关V4智慧冶金工厂视频智能监管方案

一、背景与需求 随着工业4.0的推进,冶金行业正面临着转型升级的压力。为了提高生产效率、降低能耗、保障安全,冶金智能工厂视频监管方案应运而生。该方案通过高清摄像头、智能分析技术、大数据处理等手段,对工厂进行全方位、实时监控&#xf…

svn和git的本质区别是什么

参考: https://blog.csdn.net/feiying0canglang/article/details/126550676 上边图中,跨越了区的箭头,它中间的区数据都会同步。例如:git checkout ,它是将本地仓库数据更新到暂存区和工作区的。\ 理解 gitlab和svn都…

五金压铸ERP软件有什么用?能帮助企业处理哪些难点

不同类型的五金压铸产品有不同的规格、质量、销售渠道、价格策略等,日常经营管理过程中存在的难点复杂多样。 近些年社会可的发展进步也不断推动五金压铸行业管理模式的变更,现如今逐渐朝着智能化和信息化方向发展。而在这个时代背景之下,有…

Jellyfin影音服务本地部署并结合内网穿透实现公网访问本地资源

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

系统架构设计师教程(十六)嵌入式系统架构设计理论与实践

嵌入式系统架构设计理论与实践 16.1 嵌入式系统概述16.1.1 嵌入式系统发展历程16.1.2 嵌人式系统硬件体系结构16.2 嵌入式系统软件架构原理与特征16.2.1 两种典型的嵌入式系统架构模式16.2.2 嵌入式操作系统16.2.3 嵌入式数据库16.2.4 嵌入式中间件16.2.5 嵌入式系统软件开发环…

[BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)

第15天 名词解释 Cookie 是小型的文本文件,由网站发送到用户的浏览器,并存储在用户的设备上。Cookie 通常用于存储识别用户的信息,例如用户偏好、登录状态等。每当用户再次访问同一网站时,浏览器会将 Cookie 发送回服务器&#…

mysql8版本批量造4000个数据SQL

需求: 测试工作中修改单需要构造单元下4000个组合的数据,写个博客来记录,其他类似的可以举一反三。 具体sql: 实现1个产品1个单元下插入4000个组合数据 思路: 在MySQL 8中实现循环插入4000条具有不同主键的记录,可以使用AUTO_INCREMENT和循环插入的方式。下面是一个…

5.列表选择弹窗(BottomListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7、MAUI 从底部弹出的列表选择弹窗。 1.布局 <?xml version"1.0" encoding"utf-8" ?> <toolkit:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns…

Sublime的安装及汉化

sublime安装 官网sublime 点击Windows 下载参考&#xff1a;傻瓜式下载 sublime汉化 1&#xff09;安装 Sublime Text 4 成功后&#xff0c;点击菜单 【Tools】 -> 【Install Package Control】&#xff1b; 注意&#xff1a;安装包控件需要等待一会&#xff0c;点击可…

GitBook可以搭建知识库吗?有无其他更好更方便的?

在一个现代化的企业中&#xff0c;知识是一项宝贵的资产。拥有一个完善的企业知识库&#xff0c;不仅可以加速员工的学习和成长&#xff0c;还能提高工作效率和团队协作能力。然而&#xff0c;随着企业不断发展和扩大规模&#xff0c;知识库的构建和管理变得更加复杂和耗时。 |…

React中使用LazyBuilder实现页面懒加载方法一

前言&#xff1a; 在一个表格中&#xff0c;需要展示100条数据&#xff0c;当每条数据里面需要承载的内容很多&#xff0c;需要渲染的元素也很多的时候&#xff0c;容易造成页面加载的速度很慢&#xff0c;不能给用户提供很好的体验时&#xff0c;懒加载是优化页面加载速度的方…

[Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法

一、vim及其三种模式的简单介绍 Vim是一个类似于Vi的文本编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面,如多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等…

如何使用 WebRTC 与 Kurento 建立视频会议 App

本文作者 WebRTC Ventures 工程师。在 RTC 2018 实时互联网大会上&#xff0c;WebRTC Ventures 的资深软件工程师&#xff0c;将围绕 WebRTC 开发带来经验分享。欢迎访问RTC 开发者社区&#xff0c;与更多WebRTC开发者交流经验。 了解 WebRTC 如何工作的一种简单方式是通过学习…

SpringBoot的默认组件扫描

本篇博客主要探究&#xff1a;为什么SpringBoot项目中我们没有配置组件扫描的包&#xff0c;为什么它会默认扫描启动类所在的包&#xff1f; 一、访问与启动类所在同一包下的接口 我们先来看一个简单的接口&#xff1a; 我们可以观察到&#xff0c;HelloController这个类处在…

如何做接口测试?看完这个图让你清楚了解接口测试

01 通用的项目架构 02 什么是接口 接口&#xff1a;服务端程序对外提供的一种统一的访问方式&#xff0c;通常采用HTTP协议&#xff0c;通过不同的url&#xff0c;不同的请求类型&#xff08;GET、POST&#xff09;&#xff0c;不同的参数&#xff0c;来执行不同的业务逻辑…

大数据学习之Redis、从零基础到入门(二)

二、Redis安装配置 1. VMWare本地虚拟机 VMWare准备的为64位 查看自己的VMWare是32位还是64位 getconf LONG_BIT 2. Redis的安装 2.1 系统选择 选择Linux系统 2.2 Linux版安装 2.2.1 Linux环境安装Redis必须先具备gcc编译环境 ①什么是gcc gcc是linux下的一个编译程序&…

应急响应-Windows-进程排查

进程&#xff08;process&#xff09;是计算机中的程序关于某数据集合上的一次运动活动&#xff0c;是系统进行资源分配和调度的基本单位&#xff0c;是操作系统结果的基础。在早期面向进程结构中&#xff0c;进程是线程的容器。无论是在Windows系统还是Linux系统中&#xff0c…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术&#xff0c;专业术语叫 Dead code elimination 简单来讲&#xff0c;就是在保持代码运行结果不变的前提下&#xff0c;去除…