【JavaSE】类和对象详解(下)

前言

面向对象程序的三大特性:封装、继承、多态~

书接上回 类和对象(上)~

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

前言

封装

private

public

快速生成可访问封装的方法

导包

通过import导包

模糊导入*

特殊举例

建包

static

静态成员变量

​编辑

静态成员变量的访问

静态方法

静态与非静态方法的相互调用

代码块

普通代码块

实例代码块

静态代码块

执行顺序


封装

private

代码层面封装:用private修饰成员变量,使得该成员变量只能在该类下使用

优点:提高了数据的安全性

    private String name;

例如以下代码,在Person类用private修饰name(封装了),在Test这个类中就不能使用了

这里的name报错

那应该如何访问被封装的成员变量呢?

public

我们在Person类下面写两个方法,用public 修饰,使得其他类也可以访问这些方法

    public void eat(){System.out.println(this.name+"在干饭!");}public void setName(String name){this.name=name;}public String getName(){return this.name;}

快速生成可访问封装的方法

结果截图

所以,一般情况下(有的时候还是要根据实际情况来):

  • 成员变量定义为private
  • 成员方法定义为public

简单来说就是一个文件夹

用于分类多个Java文件

导包

通过import导包

以Arrays举例

会在第一行自动导入Arrays包

模糊导入*

特殊举例

这样写更方便了,但不建议,因为代码的可读性下降了。

建包

包名:全是小写,域名的逆置写法

比如一个域名是www.baidu.com,在设置包名时是写com.baidu.www

static

静态成员变量

被static修饰的成员变量叫做 静态成员变量(类变量),不存在对象中,存在方法区里,静态成员变量不依赖于对象(不属于某个对象,是所有对象共享的)

    public static String country="中国";//用static修饰成员变量,让它存储在方法区里

静态成员变量的访问

        System.out.println(person1.country);//利用 对象. 的方式访问静态变量countrySystem.out.println(Person.country);//利用 类名. 访问静态变量country

两种方法都合法,但是第一种方法不合理!建议使用第二种方法

静态方法

    public static String getCountry() {return country;}

静态与非静态方法的相互调用

静态方法是不需要对象的,在静态方法中调用需要对象的方法是不行的

那该怎么解决这个问题呢?

我们可以在静态方法里面创建一个对象,用于非静态方法调用,这样就不会报错了

相反,在本身就需要对象的方法中调用静态方法是可以的

代码块

使用 {} 定义的一段代码称为代码块。

普通代码块

定义在方法里面的代码块

实例代码块

定义在类里面,方法外面的代码块,也叫 构造块 或者 非静态代码块

静态代码块

定义在类里面,方法外面,并且用static修饰过的代码块

执行顺序

先静态代码块,再实例代码块,最后是构造方法。

静态代码块不管有多个对象,只执行一次(因为类只会加载一次)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis plue(二) 核心功能

核心功能 P5 条件构造器 mybatisplus支持各种复杂的where条件,可以满足日常开发的所有需求 wrapper就是条件构造器,wrapper就是顶层的, 示例: 查询出名字带0,存款大于等于1000的人的id,username,info,balance字段 Testvoid te…

Redis高可用与持久化

一、Redis高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证…

Ubuntu20.04安装MatlabR2018a

一、安装包 安装包下载链接 提取码:kve2 网上相关教程很多,此处仅作为安装软件记录,方便后续软件重装,大家按需取用。 二、安装 1. 相关文件一览 下载并解压文件后,如下图所示: 2. 挂载镜像并安装 2…

Java作业练习_第五周子类与继承作业(小白学习记录,仅供参考,有错指出)

题目排序(点击直达) 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题免责声明 第一题 1在Person类中定义的是 Teacher和Manager类的共性内容, 姓名 属性,年龄属性, String name ; int age;方法say(); …

C++bitset类型

bitset类型 我们介绍了将整型运算对象当作二进制位集合处理的一些内置运算符。 标准库还定义了bitset类,使得位运算的使用更为容易,并且能够处理超过最长整型类型大小的位集合。bitset类定义在头文件bitset中。 定义和初始化bitset bitset类是一个类模…

网心云邀请码:KpyV3Dk7

网心云长期有效邀请码:KpyV3Dk7 新用户注册福利码:KpyV3Dk7 通过福利码注册并登录您可获得:①可得1元收益②1张14天50%加成卡③绑定设备可得1~5元不等 新手解答: 1. 有哪些设备可以安装?闲置电脑、闲置手机、闲置平…

Python 之 Flask 框架学习

毕业那会使用过这个轻量级的框架,最近再来回看一下,依赖相关的就不多说了,直接从例子开始。下面示例中的 html 模板,千万记得要放到 templates 目录下。 Flask基础示例 hello world from flask import Flask, jsonify, url_fora…

ISELED-演示项目代码

目录 一、main函数二、点灯函数一、main函数 int main(void) {/* Write your local variable definition here */iseledInitType.crcEnable = 1;iseledInitType.firstLedAdr = 1;iseledInitType.tempCmpEnable = 0;iseledInitType.voltSwing = 0;/*** End of Processor Expert…

JRT业务开发起步

这是一段充满挑战与奋斗的旅程,自第一行Java代码的写下起,便历经重重险阻。从细微的代码行,逐步汇聚成实用的工具类方法;从工具类方法的积累,逐渐构建起功能强大的工具包;再从工具包的整合,最终…

SpringBoot+ECharts+Html 地图案例详解

1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 此案例使用的地图是在ECharts社区中查找的:makeapie echarts社区图表可视化案例 2. 准备条件 在mysql中创建数据库echartsdb,数据库中创建表t_location_count表,表中设置两个…

InternLM

任务一 运行1.8B模型,并对话 User >>> 请创作一个 300 字的小故事 在一片茂密的森林里,住着一只小松鼠,它的名字叫做小雪。小雪非常活泼好动,经常在树上跳跃玩耍。有一天,小雪发现了一个神秘的洞穴&#xf…

大数据学习-2024/3/30-MySQL5.6版本的安装

1、下载好文件后打开bin目录: 2、在这个位置进入输入cmd进入命令行界面,进入命令行界面后输入如下:mysqld install 进行数据库安装: 注意:显示Service successfully installed表示安装成功 3、安装好后启动服务&…