Java学习笔记02:面向对象

3.1.3 面向对象特征

唯一性(每个对象都是唯一的)、分类性、继承性(Java是单继承,C++是多继承)、多态性(子类重写父类方法)

3.2.1 类的声明

  1. 访问符:public、protected、private。
  2. 修饰符:abstract、static、final。
  3. 注意类名每个单词的首字母均大写。
  4. 属性是类的数据成员。
  5. 方法是类的行为。
  6. 类中声明的变量(属性)被称为实例变量或成员变量,定义在类中的方法和属性被称为类的成员

3.2.2 对象的创建和使用

创建一个对象,栈上会分配空间存储对象在堆中的地址,即对象的引用,然后创建该对象的实际物理空间,即在堆中为该对象分配空间,所有类的对象都是动态分配空间。

null关键字表示空,用于标识一个不确定的对象,即该对象的引用为空。因此可以将null赋值给引用类型的变量,但不可以赋值给基本类型变量。null的另一个用途就是释放内存,在Java中,当某一个非null的引用类型变量指向的对象不再使用时,可以通过让其指向null来加速其被JAM内存回收。判断引用类型的数据是否为null,可以用==。

3.3 方法

[访问符] [修饰符] <返回类型> 方法名 ([参数列表]) {// 方法体}
  1. 访问修饰符和类的声明中使用的方式一样
  2. 在Java中,当参数的数据类型是基本数据类型时,实参和形参之间是按值传递的
  3. 当参数数据是引用类型的时候,是按引用传递的

3.3.2 构造函数

1. this 关键字:当方法的参数或者方法中的局部变量 与类的属性同名时,需要通过this.属性名来访问类的属性。

2. 对象的初始化:分配栈内存空间、进行默认初始化、执行构造函数的初始化、赋值操作。

3.3.3 方法的重载

  1. 必须在同一个类中。
  2. 方法名必须相同。
  3. 参数列表必须不同。
  4. 修饰符不同代表不同方法,只是恰好重名而已,不是方法的重载。

3.3.4 可变参数

void func(int ... b) {}
  1. 可变参数只能是最后一个参数。
  2. 一个方法中最多有一个可变参数。
  3. 可变参数本质是一个数组,因此拥有一个包含可变参数的方法的时候,既可以传入多个参数,也可以传入一个数组。

3.4.1 包

包可以对类的对象进行组织和管理,使其与其他源代码库中的类分隔开,只需要保证同一个包中不存在同名类即可,以确保类名的唯一性,避免类名重复。

  1. package语句必须作为Java源文件的第一条非注释性语句。
  2. 一个Java源文件只能包含指定的一个包,即只有一条package语句。
  3. 定义包之后,Java源文件中可以定义多个类,这些类将全部位于改包下,编译后形成的字节码文件都被存储在这个目录中。
  4. 多个源文件可以定义相同的包。
import java.util.*;import java.util.Arrays;java.util.Date nowDate = new java,util.Date();
  1. *指明导入当前包的所有类,但不能使用“java.*”来导入全部包的全部类。
  2. 一个Java源文件只能有一个package声明,但是可以同时导入多个包。

3.4.2 访问控制符

访问控制

private

   默认成员

(friendly)

protectedpublic
同一类中

ok

okokok
同一包不同类

no

okok

ok

不同包子类nonookok
不同包非子类nononook

注意,private、protected、public均是关键字,而friendly不是,它只是一种称谓。

3.5 静态成员

  1. static 修饰的类成员限制级别是“类相关的”,直接类名调用,可以分为类变量和类方法。
  2. 类变量属于整个类,当系统第一次使用这个类的时候,就会为该类变量分配空间,直到该类被卸载。
  3. 虽然可以通过类对象来访问类变量,但是计算机底层的逻辑还是通过类来访问类变量,所以不建议。
  4. 内存中类变量只有一份,为所有对象共享。

3.6 对象数组

对象数组中每个元素都是对象,所以必须单独初始化,即每一个都需要用new来进行初始化,只能动态初始化,所以需要new两遍(第一遍长度,第二遍对象),数组中存储的是对象的地址。

Student[] array = new Student[]{new Student(), new Student()
};Student[] array = {new Student(), new Student()
};

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

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

相关文章

非conda环境(powershell与cmd)使用opencv-python库

1.安装python 3.11.7 Python Release Python 3.11.7 | Python.org 安装成功后,查看版本为3.11.7 2.安装numpy pip install numpy 3.安装matplotlib pip install matplotlib matplotlib库安装成功

论文阅读-Directed Greybox Fuzzing 定向灰盒模糊(2017)

摘要&#xff1a; 本文介绍了一种新的Directed Greybox Fuzzing (DGF)方法&#xff0c;可以有效地指导模糊测试&#xff0c;以便更快地到达目标程序位置。作者开发了一种基于模拟退火的能量调度算法&#xff0c;逐渐为更接近目标位置的种子分配更多能量&#xff0c;同时减少远离…

k8s CNI Calico 网络模式总结

目录 calico架构图 IPIP模式下的架构图 calico 核心组件 Overlay 网络模式&#xff1a; Pod IP对外暴露 不对外暴露&#xff1a; 实现对外暴露的方法&#xff1a; overlay模式下的网络MTU Iptables & ipvs overlay的主要缺点&#xff1a; Full-mesh Unoverla…

Python使用executemany实现数据批量插入

Python的pymysql中提供有cursor.execute()实现数据的逐行插入&#xff0c;但是当数据量较大时&#xff0c;这种插入方法十分耗时。这时我们可以使用cursor.executemany()函数来实现数据的批量插入。 executemany()用法 在数据库连接后&#xff0c;使用cursor.excutemany(sql,…

【Linux】基础IO—1

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 先来段代码回顾C文件接口 "w"写文件 "a"追加文件 "r"读文件 输出信息到显示器&#xff0c;你有哪些方法 stdin & std…

Git入门实战教程之创建版本库

一、Git简介 Git是一个分布式版本控制系&#xff0c;分层结构如下&#xff1a; Git分为四层&#xff1a; 1、工作目录 当前正在工作的项目的实际文件目录&#xff0c;我们执行命令git init时所在的地方&#xff0c;也就是我们执行一切文件操作的地方。 2、暂存区 暂存区是…

Docker Compose从入门到熟悉

一、DockerCompose是什么&#xff1f; Compose 项目是 Docker 官方的开源项目&#xff0c;负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中&#xff0c;经常会碰到需要多个容器相互配合来完成某项任务…

栈的应用——用栈实现算数混合运算表达式的计算

1、单目运算符双目运算符 算数运算符分为单目运算符和双目运算符等 单目运算符只需要一个操作数,双目运算符需要两个操作数 双目运算符最常见:常见的算术运算符:*/,比较运算符:<>=等等以下是一些单目运算符:正号 (+): 用于表示正数或给数值一个正号。例如:+5 仍然…

基于卷积神经网络的土豆疾病识别系统(pytorch框架)【python源码+UI界面+前端界面+功能源码详解】

功能演示&#xff1a; 土豆疾病识别系统&#xff0c;基于vgg16&#xff0c;resnet50卷积神经网络&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的土豆疾病识别系统是在pytorch框架下实现的&#xff0c;系统中有两…

Linux | MySQL基础

MySQL MySQL是关系型数据库&#xff08;RDBMS&#xff09;&#xff0c;采用表格结构存储数据 同类型的还有Oracle、SQL Server 主要特点 适用于中小规模、关系型数据库系统(RDBMS) 支持Linux、Unix、Windows等多种操作系统 支持Python、Java、Perl、PHP等编程语言 典型应…

计组第三版书例题

基础知识过一下 存储器与CPU的连接主要通过数据总线、地址总线和控制总线实现。CPU首先向存储器发送地址信号&#xff0c;然后发出读写控制信号&#xff0c;最后在数据总线上进行数据的读写操作 。这种连接方式确保了CPU能够正确地访问和控制存储器中的数据。 https://blog.cs…

关于k8s集群中连接数不够,内存溢出的20道高级面试题

1. 描述Kubernetes集群中连接数不够的情况&#xff0c;以及可能导致的后果。 在Kubernetes集群中&#xff0c;连接数不够通常指的是网络连接的限制&#xff0c;这可能是由于以下几个原因造成的&#xff1a; 负载过高&#xff1a;当服务或应用承受的请求量超过其能够处理的范围…

树的基本概念与二叉树

文章目录 树的基本概念与二叉树一、树的概念和结构1. 树的概念2. 树的相关概念 二、树的存储1. 左孩子右兄弟表示法2. 双亲表示法 三、二叉树1. 特殊的二叉树1.1 满二叉树1.2 完全二叉树 树的基本概念与二叉树 一、树的概念和结构 1. 树的概念 树是一种非线性的数据结构,它是…

11 - Debian如何限制sudo权限

作者&#xff1a;网络傅老师 特别提示&#xff1a;未经作者允许&#xff0c;不得转载任何内容。违者必究&#xff01; Debian如何限制sudo权限 《傅老师Debian小知识库系列之11》——原创 上一篇介绍了特定用户使用su命令切换root。但是权限太大&#xff0c;而且root密码有泄…

MBTI测试背后的心理学原理:为什么它能揭示你的职业性格?

MBTI简介 迈尔斯-布里格斯类型指标&#xff08;Myers–Briggs Type Indicator&#xff0c;MBTI&#xff09;是由美国作家伊莎贝尔布里格斯迈尔斯和她的母亲凯瑟琳库克布里格斯共同制定的一种人格类型理论模型。 该指标以瑞士心理学家卡尔荣格划分的8种心理类型为基础&#xff…

节点与其祖先之间的最大差值(DFS,Java)

题目描述&#xff1a; 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val|&#xff0c;且 A 是 B 的祖先。 &#xff08;如果 A 的任何子节点之一为 B&#xff0c;或者 A 的任何子节点是 B 的祖先&#xff…

【数据结构】--- 探索栈和队列的奥秘

关注小庄 顿顿解馋૮(˶ᵔ ᵕ ᵔ˶)ა &#x1f4a1;个人主页&#xff1a;9ilk &#x1f4a1;专栏&#xff1a;数据结构之旅 上回我们学习了顺序表和链表&#xff0c;今天博主来讲解两个新的数据结构 — 栈和队列 &#xff0c; 请放心食用 文章目录 &#x1f3e0; 栈&#x1…

三足鼎立 PTA(25分)

目录 题目 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 样例解释&#xff1a; 题解 C code Java code 题目 当三个国家中的任何两国实力之和都大于第三国的时候&#xff0c;这三个国家互相结盟就呈“三足鼎立”之势&#…

【C++】二叉搜索数

目录 一、二叉搜索树的概念 二、二叉搜索树的模拟实现 1、定义节点 2、构造二叉树 3、析构二叉树 ​4、拷贝二叉树 5、二叉树赋值 6、插入节点 &#x1f31f;【非递归方式】 &#x1f31f;【递归方式】 7、打印节点 8、搜索节点 &#x1f31f;【非递归方式】 &…

我的需求分析方法论

或网上看了无数博客文章、技术视频&#xff0c;或购买金装版本技术书籍&#xff0c;看过无数原理原则、各种各样经典方法论&#xff0c;真正在实际开发工作中&#xff0c;本能去遵守和执行的又留下多少呢。 启动一个新系统时&#xff0c;我们可能还会去花些时间遵循这些原理原则…