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

news2024/9/21 2:44:37

目录

面向对象介绍

什么是面向对象编程?

为什么用面向对象编程?

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

类和对象

介绍

类的定义

构造方法

作用

格式和特点、执行时机

构造方法注意事项

标准的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关键字

有什么作用?

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

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

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

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

 

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

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

相关文章

用Vue3和Plotly.js实现3D小提琴图的交互式可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 小提琴图&#xff1a;绘制性别账单分布 应用场景 小提琴图是一种数据可视化工具&#xff0c;用于比较不同组别的分布。它结合了箱线图和核密度估计&#xff0c;可以直观地展示数据的中心趋势、离散度和分布形…

蚂蚁百灵大模型:多模态能力让大模型像人一样理解感知

7月5日&#xff0c;在2024世界人工智能大会“可信大模型助力产业创新发展”论坛上&#xff0c;蚂蚁集团公布其自研百灵大模型最新研发进展&#xff1a;百灵大模型已具备能“看”会“听”、能“说”会“画”的原生多模态能力&#xff0c;可以直接理解并训练音频、视频、图、文等…

【C++】C++入门基础--命名空间,缺省参数,函数重载

文章目录 前言一、C是什么&#xff1f;二、C发展历史C版本更新C参考文档 三、C基本语法1.第一个C程序2.命名空间2.1命名空间的价值2.2命名空间的定义2.3命名空间的使用 3.C的输入与输出4.缺省参数5.函数重载 总结 前言 在编程的浩瀚宇宙中&#xff0c;C犹如一颗璀璨的明星&…

MySQL手注之布尔型盲注详解

布尔型盲注简介 基于布尔型SQL盲注即在SQL注入过程中&#xff0c;应用程序仅仅返回True&#xff08;页面&#xff09;和False&#xff08;页面&#xff09;。 这时&#xff0c;我们无法根据应用程序的返回页面得到我们需要的数据库信息。但是可以通过构造逻辑判断&#xff08;…

C++语言学习精简笔记(包含C++20特性)

目录 1 C新语法C与CC编译运行String编程范式C基础类型**自动类型推导**统一对象初始化&#xff1a;Uniform Initialization 控制结构if语句for语句switch语句namespace 2 函数函数声明形式参数函数参数传递的选择函数返回值的选择 函数重载 Lambda表达式函数的定义和申明生存期…

算法之工程化内容(2)—— Git常用命令

目录 1. git初始化配置 2. 新建仓库 3. 工作区——>暂存区——>本地仓库 4. git reset回退版本 5. 查看差异 git diff 6. 删除文件git rm 7. .gitignore 8. vscode操作git 9. git分支、合并和删除 10. 解决合并冲突 11. 回退和rebase 12. 添加远程仓库 参考链接&#xff…

6.824/6.5840 的Debugging by Pretty Printing配置

TA的原文在&#xff1a;Debugging by Pretty Printing (josejg.com) 为了在WSL2中配置好打印运行日志&#xff0c;我可是忙活了一下午。可恶的log配置 首先是安装rich库Textualize/rich: Rich is a Python library for rich text and beautiful formatting in the terminal. …

Android布局简介

布局是一种可用于放置很多控件的容器&#xff0c;根据既定的规则决定内部控件的位置。当然&#xff0c;布局的内部也可以放置布局&#xff0c;即布局嵌套&#xff0c;布局嵌套可以实现一些比较复杂的界面。 Android中有多种编写程序界面的方式可供选择。Android Studio提供了相…

Android应用程序调试Logcat的使用

Android的程序调试主要使用Logcat进行&#xff0c;本节主要介绍Logcat的使用。 开启调试模式 使用Android Studio进行程序调试&#xff0c;首先需要连接虚拟Android设备或真实Android设备&#xff0c;设备上需要启用调试功能。 虚拟Android设备默认情况下会启用调试功能。对…

超详细!Jmeter 压测-设计5W并发量场景

需求&#xff1a;设计一个5W并发量的性能场景&#xff1f; 1、确定性能测试工具&#xff0c;性能测试思路 测试工具&#xff1a;Jmeter 并发设计思路&#xff1a;如果被测服务足够快&#xff0c;比如10ms的响应时间&#xff0c;1个线程/秒就是100tps&#xff0c;5万的TPS&…

Redis代替Session实现共享

集群的session共享问题 session共享问题&#xff1a;多台tomcat并不共享session存储空间&#xff0c;当请求切换到不同的tomcat服务时导致数据丢失的问题。 session的替代方案&#xff1a; 数据共享内存存储key、value结构 将redis替换session可以解决session共享问题

AI发展的新方向:从卷模型到卷应用

在2024年7月4日于上海世博中心举办的世界人工智能大会暨人工智能全球治理高级别会议全体会议上&#xff0c;百度创始人、董事长兼首席执行官李彦宏发表了一段引人深思的演讲。他在产业发展主论坛上提出&#xff1a;“大家不要卷模型&#xff0c;要卷应用&#xff01;”这句话道…

打卡第7天-----哈希表

继续坚持✊,我现在看到leetcode上的题不再没有思路了,真的是思路决定出路,在做题之前一定要把思路梳理清楚。 一、四数相加 leetcode题目编号:第454题.四数相加II 题目描述: 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j…

设计模式使用简例(简单工厂+策略模式+模板方法)

直接上代码&#xff0c;方便记忆。主要的要点&#xff0c;已经写到注释中。 一&#xff0c;代码展示 启动类 package com.rojer;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootAppli…

【电路笔记】-C类放大器

C类放大器 文章目录 C类放大器1、概述2、C类放大介绍3、C类放大器的功能4、C 类放大器的效率5、C类放大器的应用:倍频器6、总结1、概述 尽管存在差异,但我们在之前有关 A 类、B 类和 AB 类放大器的文章中已经看到,这三类放大器是线性或部分线性的,因为它们在放大过程中再现…

离线运行Llama3:本地部署终极指南_liama2 本地部署

4月18日&#xff0c;Meta在官方博客官宣了Llama3&#xff0c;标志着人工智能领域迈向了一个重要的飞跃。经过笔者的个人体验&#xff0c;Llama3 8B效果已经超越GPT-3.5&#xff0c;最为重要的是&#xff0c;Llama3是开源的&#xff0c;我们可以自己部署&#xff01; 本文和大家…

大话光学原理:3.干涉与衍射

一、干涉 这是一束孤独的光&#xff0c;在真空的无垠中悄无声息地穿行。忽然&#xff0c;一堵高耸的墙壁挡住了它的去路&#xff0c;它别无选择&#xff0c;只能硬着头皮冲撞而去。在摸索中&#xff0c;它意外地发现墙壁上竟有两道孔隙&#xff0c;笔直而细长&#xff0c;宛如量…

tableau树形图制作 - 7

树形图制作 1. 树状图绘制-11.1 选择属性1.2 智能选择树状图1.3 颜色设置 2. 树状图绘制-22.1 标签属性选择2.2 树状图绘制2.3 颜色设置2.4 设置标签2.5 设置筛选器 3. 树状图绘制 - 33.1 选择行列3.2 树状图转换3.3 统计转换3.4 颜色设置3.5 标签设置3.6 筛选器设置 1. 树状图…

【系统架构设计】计算机组成与体系结构(二)

计算机组成与体系结构 计算机系统组成存储器系统前言主存储器存储器存储数量&#xff08;计算&#xff09; 辅助存储器&#xff08;以磁盘为例&#xff09;Cache存储器 流水线 计算机系统组成 存储器系统 前言 存储器用来存放程序和数据的部件&#xff0c;是一个记忆装置&am…

Michael.W基于Foundry精读Openzeppelin第63期——Initializable.sol

Michael.W基于Foundry精读Openzeppelin第63期——Initializable.sol 0. 版本0.1 Initializable.sol 1. 目标合约2. 代码精读2.1 _getInitializedVersion() internal && _isInitializing() internal2.2 modifier initializer()2.3 modifier reinitializer(uint8 version…