Java巅峰之路---基础篇---面向对象

目录

面向对象介绍

什么是面向对象编程?

为什么用面向对象编程?

面向对象的重点学习什么?

类和对象

介绍

类的定义

构造方法

作用

格式和特点、执行时机

构造方法注意事项

标准的JavaBean类

定义类的补充注意事项

封装

什么是封装?

封装思想的好处

private关键字

this关键字

有什么作用?

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


面向对象介绍

什么是面向对象编程?

面向:拿、找

对象:能干活的东西

面向对象编程:拿东西过来做对应的事情

为什么用面向对象编程?

这种编程更加符合人类思维习惯,编程更简单,更好理解。

面向对象的重点学习什么?

1、学习获取已有对象并使用

2、学习如何自己设计并使用

类和对象

介绍

· 类(设计图):是对象共同特征的描述;

· 对象(能帮我们干活的东西):是真实存在的具体东西。

类的定义

public class 类名{

        1、成员变量(代表属性,一般是名词)

        2、成员方法(代表行为,一般是动词)

        3、构造器

        4、代码块

        5、内部类

}

只含变量与方法的类(简单)

package text;

public class GirlFriend {
    String name;
    int age;
    String gender;

    public void eat(){
        System.out.println("吃东西");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}
package text;

public class GirlFriendText {
    public static void main(String[] args) {
        GirlFriend gf1 = new GirlFriend();
        gf1.eat();
        gf1.age = 18;
        gf1.name = "小诗诗";
        System.out.println(gf1.age);
        System.out.println(gf1.name);
    }
}

构造方法

作用

· 在创建对象的时候给成员变量进行赋值

格式和特点、执行时机

public class 类名{

        public 类名(参数){方法体;}

}

特点:

· 方法名与类名相同,大小写也要一致

· 没有返回值类型,连void都没有

· 没有具体的返回值(不能由return带回结果数据)

执行时机:

· 创建对象的时候有虚拟机调用,不能手动调用构造方法

· 没创建一次对象,就会调用一次构造方法

构造方法注意事项

1)构造方法的定义

· 如果没有定义构造方法,系统将给出一个默认无参数构造方法

· 如果定义了构造方法,系统将不再提供默认的构造方法

2)构造方法的重载

· 带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这叫做构造方法的重载。

3)推荐的使用方式

· 无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法

标准的JavaBean类

1)类名需要见名知意

2)成员变量使用private修饰

3)提供至少两个构造方法

· 无参构造方法

· 带全部参数的构造方法

4)成员方法

· 提供每一个成员变量对应的set和get方法

· 如果还有其他行为,也需要写上

5)快捷键

· alt + insert 或alt + fn + insert

· 安装插件PTG(推荐)

定义类的补充注意事项

· 用来描述一类事物的类,专业叫做:Javabean类。在Javabean类中,是不写main方法的。

· 编写main方法的类,叫做测试类。我们可以在测试类中创建javabean类的对象并进行赋值调用。

·  类名首字母建议大写,需要见名之意,驼峰模式。

· 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。

· 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化;一般无需指定初始化,存在默认值

封装

什么是封装?

· 告诉我们,如何正确设计对象的属性和方法

· 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

例如:“人画圆”,画圆该行为(方法)是写在圆的类里边的。画圆该行为需要半径才能实现,而半径是圆的属性,所以画圆该行为(方法)是写在圆的类里边的。“人关门”,关门该行为需要门的状态数据(关或者开),所以关门该行为(方法)是写在门的类里边的。

封装思想的好处

 · 让编程变得很简单,有什么事,找对象,调方法就行。

· 降低我们的学习成本,不用记对象有哪些方法,有需要时区API文档找就行

private关键字

· 是一个权限修饰符

· 可以修饰成员(成员变量和成员方法)

· 被private修饰的成员只能在本类中访问

· 如果需要被其他类使用,需要提供相应的set和get方法才行

package text;

public class GirlFriendText {
    public static void main(String[] args) {
        GirlFriend gf1 = new GirlFriend();
        gf1.setName("小诗诗");
        gf1.setAge(-1);
        gf1.setGender("女");

        System.out.println(gf1.getName());
        System.out.println(gf1.getGender());
        System.out.println(gf1.getAge());

        gf1.eat();
        gf1.sleep();
    }
}

 

package text;

public class GirlFriend {
    private String name;
    private int age;
    private String gender;

    //针对每一个私有化的成员变量,都要提供set和get方法
    //set方法:给成员变量赋值
    //get方法:对外提供成员变量的值
    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }
    public void setAge(int a) {
        if (a >= 18 && a <= 50) {
            age = a;
        } else {
            System.out.println("非法参数");
        }
    }
    public int getAge() {
        return age;
    }
    public void setGender(String g) {
        gender = g;
    }
    public String getGender() {
        return gender;
    }
    public void eat(){
        System.out.println("吃东西");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}

this关键字

有什么作用?

 · 可以区别成员变量和局部变量

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

 · 成员变量:类中方法外的变量

 · 局部变量:方法中的变量,形参

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

水的过滤方式介绍

RO反渗透程序设计软件下载 超滤(UF)&#xff1a; 过滤精度在0.001-0.1微米&#xff0c;属于二十一世纪高新技术之一。是一种利用压差的膜法分离技术&#xff0c;可滤除水中的铁锈、泥沙、悬浮物、胶体、细菌、大分子有机物等有害物质&#xff0c;并能保留对人体有益的一些矿物质…

音频demo:使用fdk-aac将PCM数据编码成aac数据

1、README a. 编译 编译demo 本demo是使用的开源项目fdk-aac将PCM数据编码成aac音频文件。由于提供的.a静态库是在x86_64的机器上编译的&#xff0c;所以默认情况下仅支持该架构的主机上编译运行。 $ make编译fdk-aac&#xff08;可选&#xff09; 如果想要在其他架构的CP…

【笔记】finalshell中使用nano编辑器GNU

ctrl O 保存 enter 确定 ctrl X 退出 nano编辑 能不用就不用吧 因为我真用不习惯 nano编辑的文件也可以用vim编辑的

VsCode崩溃无法打开解决办法

今天打开电脑 点开vscode突然不能使用了 每次点开都闪退,于是查找解决办法 直接重启电脑 这个方法没有解决问题 删除软件 重新安装软件 软件删干净之前保存下自己的配置文件 比如扩展和settings.json和keybinding.json Mac系统 在 /Users/用户名/.vscode/extensions 和/User…

2024年 春秋杯 网络安全联赛夏季赛 Web方向 题解WirteUp 部分

brother 题目描述&#xff1a;web哥&#xff0c;打点容易提权难。 打点就是最简单的SSTI。 执行下find / -user root -perm -4000 -print 2>/dev/null找一下具备suid权限的命令 /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/chsh /usr/bin/gpasswd /usr/bin/n…

Java-链表反转

题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 图示&#xff1a; 输入&#xff1a; head [1,2,3,4,5] 输出&#xff1a; [5,4,3,2,1] 解题思路&#xff1a; 情况一&#xff1a; 只有一个节点或者没有节点 …

C语言 | Leetcode C语言题解之第224题基本计算器

题目&#xff1a; 题解&#xff1a; int calculate(char* s) {int n strlen(s);int ops[n], top 0;int sign 1;ops[top] sign;int ret 0;int i 0;while (i < n) {if (s[i] ) {i;} else if (s[i] ) {sign ops[top - 1];i;} else if (s[i] -) {sign -ops[top - 1…

Python | Leetcode Python题解之第223题矩形面积

题目&#xff1a; 题解&#xff1a; class Solution:def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:area1 (ax2 - ax1) * (ay2 - ay1)area2 (bx2 - bx1) * (by2 - by1)overlapWidth min(ax2, bx2) - …

挑战杯 opencv python 深度学习垃圾图像分类系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; opencv python 深度学习垃圾分类系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 这是一个较为新颖的竞…

如何把harmonos项目修改为openharmony项目

一开始分不清harmonyos和openharmony&#xff0c;在harmonyos直接下载的开发软件&#xff0c;后面发现不对劲&#xff0c;打脑阔 首先你要安装对应版本的开发软件&#xff0c;鸿蒙开发是由harmonyos和openharmony官网两个的&#xff0c;找到对应的地方下载对应版本的开发软件&…

【链表】- 链表相交

1. 对应力扣题目连接 链表相交 2. 实现思路 链表详情&#xff1a; 考虑使用双指针&#xff1a; 解法一&#xff1a; 具体代码&#xff0c;详见3. 实现案例代码解析&#xff1a; 思路&#xff1a;因为链表按照如图的箭头走向&#xff0c;走的总路程是相等的&#xff0c;一…

数字交流便携式电阻式三相负载组

三相型号选项范围从小型、便携式、低功耗单元到大功率、室内和室外永久电阻负载组。型号标配按钮式手动控制以及 PC 软件控制&#xff0c;为处理复杂的测试应用提供先进的负载曲线解决方案。这些装置适用于各种用途&#xff0c;包括测试发电机、UPS 系统、数据中心电源系统、电…

自定义类TMyLabel继承自QLabel ,实现mouseDoubleClickEvent

自定义类TMyLabel &#xff0c;继承自QLabel TMyLabel 中重新实现了 event 方法&#xff0c;重写了mouseDoubleClickEvent 发射信号 在主窗体中放入TMyLabel组件&#xff0c;将TMyLabel mouseDoubleClickEvent 信号&#xff0c; 绑定到实现方法do_doubleClick()槽函数 TMy…

排序算法(算法篇)

算法之排序算法 排序算法 概念&#xff1a; 我们在的排序工作能在主存中完成的&#xff0c;我们就叫这种算法叫做内部排序不能在主存中完成而必须在磁盘或磁带上完成的排序算法叫做外部排序 冒泡排序 概念&#xff1a; 冒泡排序是一个很简单的排序算法&#xff0c;冒泡排…

【测试】软件测试方案(2024模板方案套用)

1. 引言 1.1. 编写目的 1.2. 项目背景 1.3. 读者对象 1.4. 参考资料 1.5. 术语与缩略语 2. 测试策略 2.1. 测试完成标准 2.2. 测试类型 2.2.1. 功能测试 2.2.2. 性能测试 2.2.3. 安全性与访问控制测试 2.3. 测试工具 3. 测试技术 4. 测试资源 4.1. 人员安排 4.2. 测试环境 4.2.…

STM32-按键及传感器模块

本内容是基于江协科技STM32视频整理而得。 1. 按键及传感器模块 1.1 按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开&#xff1b; 按键抖动&#xff1a;由于按键内部使用的是机械式弹簧片来进行通断的&#xff0c;所以在按下和松手的瞬间…

【ARMv8/v9 GIC 系列 5.8 -- SPI 中断路由到指定的 core 详细介绍】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 SPI 中断路由配置寄存器字段代码示例Usage scenarioSPI 中断路由配置 在ARMv8和ARMv9架构下,当启用亲和性路由(Affinity Routing)时,系统寄存器GICD_IROUTER<n>用于提供具有INTID n的SPI的路由信息。n的最大值由公式(32*…

计算机网络 - 万字长文

计算机网络 二、计算机网络2.1 七层模型表格2.2 通俗讲解七层模型2.3 TCP与UDP对比2.4 TCP 三次握手过程==为什么握手是三次,而不是两次或者四次?====三次握手可以携带数据吗?====TCP三次握手失败,服务端会如何处理?====什么是半连接队列?全连接====ISN(Initial Sequence…

【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘D:\1. PDF’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;FileNotFoundError: [Errno 2] No such file or directory: ‘D:\1. PDF’ 一、分析问题背景 在Python编程中&#xff0c;当你尝试打开一个不存在的文件时&…

昇思25天学习打卡营第15天|应用实践之ShuffleNet图像分类

基本介绍 今天的应用实践的领域是计算机视觉领域&#xff0c;更确切的说是图像分类任务&#xff0c;不过&#xff0c;与昨日不同的是&#xff0c;今天所使用的模型是ShuffleNet模型。ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一…