【Java基础11】面向对象、面向过程、类、对象、封装

2023-11-06

一、面向对象和面向过程

面向对象:以对象为单位,通过调度组合不同的对象来完成某一个功能。

面向过程:以步骤为单位,一步一步完成某一个具体的功能。

二、类

1、类的定义

class 类名{

//在类中定义属性、方法

}

class student{
    String stuId="1234556789";
    int stuAge=20;//属性
    public void studing(){//方法
    	System.out.println("活到老,学到老!");
    }
}

2、类的引用

public static void main(String[] args) {
    Student stu=null;//声明一个类的变量
    stu=new Student();//创建类的对象
    stu.stuAge=20;//调用类的属性
    stu.studing();//调用类的方法
}

三、对象

1、匿名对象

//只能使用一次,使用后该对象就会被释放
new Student().studing();

2、释放对象

stu=null;
stu.studing();//报错,空指针

3、对象内存分析

1、栈内存存储对象的地址,堆内存存储对象的属性。

在这里插入图片描述

2、若对对象进行赋值stu2=stu1(相同类型才可以赋值),则堆内存只开辟一个空间,栈内存的stu2、stu1地址相同,且同时指向堆内存的同一个空间。

当堆中的对象未被引用变量指向时,会被JVM中的GC程序认为是垃圾对象,从而内存会被回收。

在这里插入图片描述

3、将对象赋值之后,stu2和stu1指向同一个地址,则任意一个对象更改属性,另一个对象也更改。

四、封装

1、封装的概念

隐藏实现细节,仅对外提供访问接口。

2、封装的类型

属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装等。

3、封装的好处

模块化、信息隐藏、代码重用、插件化易于调试、具有安全性

4、封装的缺点

会影响执行效率。

5、访问权限修饰符

public-公有,可以被所有的类访问

private-私有,只能在本类中访问,若想在外部访问,需要提供公有的方法进行访问。

通常设值属性都用private进行封装,以保护属性的安全。

public class Test04 {

	public static void main(String[] args) {
		Person p1=new Person();
		p1.setName("小明");
		p1.getName();
	}
}


class Person{
    private String name;
    //对外提供一个为name设值的方法
    public void setName(String name){
    	this.name=name;//this表示就近,访问形参的name
	}
    //对外提供一个获取name值的方法
    public String getName(){
    	return name;
	}
}

6、成员变量和局部变量

在类中的位置不同:

成员变量:在类中定义

局部变量:在方法中定义

在内存中的位置不同:

成员变量:在堆内存(属于对象,对象在堆内存)

局部变量:在栈内存(属于方法,方法运行时进栈,运行结束出栈)

生命周期不同:

成员变量:随着对象的创建而创建,随着对象的销毁而销毁

局部变量:随着方法的调用存在

初始化值不同

成员变量:有默认的初始化值,引用类型默认null

局部变量:没有默认的初始化值,必须定义赋值,然后才能使用

成员变量和局部变量名称可以相同,但是要注意用this关键字区分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Java基础11】面向对象、面向过程、类、对象、封装 的相关文章

随机推荐

  • 基础实验篇

    导读 uORB是PX4 Pixhawk系统中非常重要且关键的模块之一 是用于无人机模块间通信的协议机制 本篇将详细介绍uORB并详细拆解uORB消息读写与自定义实验 一 基础实验篇 uORB消息读写与自定义实验 一 ect Request
  • ctfshow--web入门(web101--web115&web123&web125-web133)

    ctfshow web入门 web101 web115 web123 web125 web133 web101
  • 什么是CSRF

    目录 1 CSRF是什么 2 CSRF漏洞检测 3 防御CSRF攻击 3 1 验证 HTTP Referer 字段 3 2 在请求地址中添加 token 并验证 3 3 在 HTTP 头中自定义属性并验证 1 CSRF是什么 CSRF Cr
  • 结合高阶函数聊聊useMemo和useCallback

    使用useMemo可以实现useCallback useCallback fn deps 其实相当于 useMemo gt fn deps 所以说 使用useMemo完全可以实现useCallback useCallback functio
  • 如何用MODIS数据在TIMESAT中提取物候参数

    感觉研究植被物候的帖子好少呀 也找不到关于TIMESAT的操作教程 这里便记载我学习植被物候信息提取的学习笔记 下面是我综合了很多零零散散的信息学习到的东西 但是还是有很多看不明白的地方 比如一些参数的设置上面 希望有知道的可以让我学习一下
  • Spring Boot + Jpa(Hibernate) 架构基本配置

    1 基于springboot 1 4 0 RELEASE版本测试 2 springBoot Hibernate Druid Mysql servlet jsp 不废话 直接上代码 一 maven的pom文件
  • Git 常用指令

    Git 常用指令 bashrc 文件 用于输出git提交日志 alias git log git log pretty oneline all graph abbrev commit 用于输出当前目录所有文件及基本信息 alias ll l
  • pandas数据预处理------去除‘特征重复’的2种方法

    常见的数据重复包括 1 记录重复 一个或多个特征的某条记录的值完全相同 2 特征重复 存在一个或者多个特征名称不同 但数据完全相同的情况 去除特征重复的2种方法 1 通过相似度矩阵去重 要去除连续的特征重复 可以利用特征间的相似度将两个相似
  • permission denied while trying to connect to the Docker daemon socket 错误

    安装 docker 执行错误如下 docker ps permission denied while trying to connect to the Docker daemon socket at unix var run docker
  • 做一个统计单词数目的Atom插件

    本文是Atom 教程 制作单词计数插件的简化介绍 所有代码都来自这篇文章 如果希望参考详细的文档 请直接查看原文 这篇文章用一个简单的小例子 为我们讲解了如何编写一个Atom编辑器插件 该例子使用的是CoffeeScript 所以为了更好地
  • leetcode----JavaScript 详情题解(2)

    目录 2629 复合函数 2631 分组 2634 过滤数组中的元素 2635 转换数组中的每个元素 2637 有时间限制的 Promise 对象 2648 生成斐波那契数列 2649 嵌套数组生成器 2665 计数器 II 2666 只允
  • 可重复读输入流的问题

    为了统一签名 需要在controller之前读json输入流数据 controller的参数绑定是直接读inputStream 但一般httpServletRequest只能读一次 解决方法是 在filter中直接读一次inputStrea
  • 【7-4 h0018.金币 (20 分)】思路清晰,c++实现,分分钟解决

    7 4 h0018 金币 20 分 国王以金币支付给他忠诚的骑士 在他服役的第一天 骑士会得到一枚金币 在接下来的每两天 服务的第二和第三天 骑士会收到两枚金币 在 在接下来的三天里 第四 第五和第六天 骑士每一天都会得到三枚金币 在接下来
  • HTML中怎么设置图片的位置和大小

    其他的也不多废话了直接上代码 img src fan jpg width 800 height 800
  • python批量爬取公众号文章

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 版权归原作者所有 如有问题请及时联系我们以作处理 作者 舴艋的舟 PS 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群
  • js逆向:rpc远程调用

    websocket python代码 服务端 先开启这个 import asyncio import websockets connected set async def server websocket connected add web
  • Linux系统连接华为oceanstor数据存储

    Linux系统连接华为oceanstor数据存储 一 登录检查oceanstor数据存储 二 配置linux使用的数据储存 1 创建LUN 2 创建Lun组 3 创建主机 4 创建主机组 5 创建映射关系 三 Linux客户端操作 1 查看
  • 「建议收藏」Pycharm使用教程(非常详细,非常实用)

    Pycharm使用教程 1 Jetbrains家族和Pycharm版本划分 pycharm是Jetbrains家族中的一个明星产品 Jetbrains开发了许多好用的编辑器 包括Java编辑器 IntelliJ IDEA JavaScrip
  • Atcoder Beginner Contest 300

    A N choice question AC代码 include
  • 【Java基础11】面向对象、面向过程、类、对象、封装

    一 面向对象和面向过程 面向对象 以对象为单位 通过调度组合不同的对象来完成某一个功能 面向过程 以步骤为单位 一步一步完成某一个具体的功能 二 类 1 类的定义 class 类名 在类中定义属性 方法 class student Stri