05—面向对象(上)

一、面向对象编程

1、类和对象

(1)什么是类

        类是一类具有相同特性的事物的抽象描述,是一组相关属性行为的集合。

  • 属性:就是该事物的状态信息。
  • 行为:就是在你这个程序中,该状态信息要做什么操作,或者基于事物的状态能做什么。
(2)什么是对象

        对象是一类事物的一个具体个体(对象并不是找个女朋友)。即对象是类的一个实例,必然具备该类事物的属性和行为。

(3)类和对象的关系
  • 类是对一类事物的描述,是抽象的。是相同属性和方法的一组对象的集合。

  • 对象是一类事物的实例,是具体的

  • 类是对象的模板,对象是类的实体。是能够看的到,摸得到的具体实体。

  • 世间万物皆对象

2、如何定义类

(1)类的定义格式

        关键字:class

【修饰符】 class 类名{}//例如
public class Student{}
(2)对象的创建

        关键字:new

new 类名()//也称为匿名对象//给创建的对象命名
//或者说,把创建的对象用一个引用数据类型的变量保存起来,这样就可以反复使用这个对象了
类名 对象名 = new 类名();
Class class = new Class();

二、包(package)

1、包的作用

  • 可以避免类重名:有了包之后,类的全名称就变为:包.类名
  • 可以控制某些类型或成员的可见范围(如果某个类型或者成员的权限修饰缺省的话,那么就仅限于本包使用。)
  • 分类组织管理众多的类

2、如何声明包

        关键字:package

package 包名;

注意:

        (1) 必须在源文件的代码首行

        (2) 一个源文件只能有一个声明包的package语句

包的命名规范和习惯:

        (1)所有单词都小写,每一个单词之间使用.分割

        (2)习惯用公司的域名倒置开头

        如:com.baidu.xxx;

3、如何跨包使用类

注意:只有public的类才能被跨包使用

(1)使用类型的全名称

        例如:java.util.Scanner input = new java.util.Scanner(System.in);

(2)使用import 语句之后,代码中使用简名称

        import语句告诉编译器到哪里去寻找类。

        import语句的语法格式:

import 包.类名;
import 包.*;

注意:

  • 使用java.lang包下的类,不需要import语句,就直接可以使用简名称
  • import语句必须在package下面,class的上面
  • 当使用两个不同包的同名类时,例如:java.util.Date和java.sql.Date。一个使用全名称,一个使用简名称

三、成员变量

1、如何声明成员变量

【修饰符】 class 类名{【修饰符】 数据类型  成员变量名; 
}例如:public class Person{String name;char gender;int age;
}

        位置要求:必须在类中,方法外

        类型要求:可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

        修饰符:成员变量的修饰符有很多,例如:public、protected、private、static、volatile、transient、final等,后面会一一学习。

        其中static可以将成员变量分为两大类,静态变量和非静态变量。其中静态变量又称为类变量,非静态变量又称为实例变量或者属性。接下来先学习实例变量。

2、对象的实例变量

1、实例变量的特点

(1)实例变量的值是属于某个对象的

  • 必须通过对象才能访问实例变量

  • 每个对象的实例变量的值是独立的

(2)实例变量有默认值

2、实例变量的访问
实例对象.实例变量

3、静态成员

静态成员:

        静态成员变量(由static修饰,内存加载一次):常表示在线人数需要被共享的信息,可以被共享访问。

        同一类中静态成员变量的访问可以省略类名。同一个类中,访问静态方法,类名可以省略不写【这点就可以解释在主函数main中,可以不用写类名,直接写方法名就可以用这个方法】。

使用场景区别:

        实例方法:表示对象自己的行为,且方法中需要访问实例成员。

        静态方法:如果该方法是以执行一个共用功能为目的。

内存原理:

        当类被加载到方法区的时候,其静态方法也已经被加载了出来,但成员方法还暂时没有加载。 Main方法加载到栈内存,然后创建对象(在堆内存中创建对象,在栈内存中的main方法中存放着对象在堆内存的地址。)对象中包含着实例成员变量和实例成员方法(方法在方法引用中。)当需要用到方法时,实例方法会加载到方法区中。

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

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

相关文章

加固系统安全,防范ssh暴力破解之Fail2Ban

你是否还在担心你的服务器被攻击?你是否还在担心你的博客的安全?你是否还在担心你的隐私?别急fail2ban它来了,它可以解决你的一切问题。 Fail2Ban 是什么? 现在让我们一起来认识一下今天的主角 – Fail2Ban。简单说来…

数据结构复习指导之顺序表上基本操作的实现(插入、删除、查找)

文章目录 顺序表基本操作实现 知识总览 1.顺序表的初始化 1.1静态分配顺序表的初始化 1.2动态分配顺序表的初始化 2.插入操作 2.1插入操作流程 2.2插入操作时间复杂度 3.删除操作 3.1删除操作流程 3.2删除操作时间复杂度 4.查找操作 4.1按位查找 4.2按位查找时间…

深入了解TypeScript:从基础语法到高级特性

在当今的软件开发领域中,TypeScript(TS)作为JavaScript的超集语言,越来越受到开发者的关注和喜爱。它扩展了JavaScript的语法,并引入了静态类型检查,为开发者提供了更好的开发工具和更可靠的代码结构。本篇…

Linux环境下的进程间通信(IPC)机制:DBus、共享内存、套接字与管道详解

在Linux环境中,进程间通信(IPC)是一个核心概念,允许运行中的进程相互交换数据。IPC机制包括但不限于dbus-daemon、共享内存、套接字和管道。本文将深入探讨这些机制的工作原理、用途以及它们之间的差异。 1、dbus-daemon DBus是…

TinyEMU源码分析之中断处理

TinyEMU源码分析之中断处理 1 触发中断2 查询中断2.1 查询中断使能与pending状态(mie和mip)2.2 查询中断总开关与委托(mstatus和mideleg)2.2.1 M模式2.2.2 S模式2.2.3 U模式 3 处理中断3.1 获取中断编号3.2 检查委托3.3 进入中断3…

软件设计师-基础知识科目-数据库技术基础识9

九、数据库技术基础识: 数据库设计阶段: 需求分析阶段 -> 确定系统边界。逻辑设计阶段 -> 关系规范化分。 数据库三级模式和两层映射: 三级模式: 外模式、概念模式(也称模式)、内模式&#xff08…

Python实现植物大战僵尸

"植物大战僵尸" 是一个复杂的游戏,涉及到图形界面、游戏逻辑、音效、动画等多个方面。要用Python实现这样的游戏,你需要用到一些额外的库,比如pygame来处理图形和音效,numpy来处理游戏数据等。 以下是一个简单的示例&a…

新员工入职培训时长缩短36%!智能陪练产品再升级

诸多预测认为,2024 年将成为国内大模型产业应用爆发的元年。中关村科金作为领先的对话式 AI 技术解决方案提供商,自主研发的智能陪练产品,以学、练、考、培一体化的方式,为企业提供全方位的综合培训服务。 借助大模型技术方面的突…

视频号小店新商机逐渐爆发,高门槛仍挡不住商家前进的脚步!

大家好,我是电商花花。 不知道大家有没有发现一件很有意思的事情,就是现在有越来越多的商家涌入抖音小店,部分商家还是想在视频号小店里博一丝机会。 我们都知道视频号小店是除了抖音小店之外,最火热的项目了,部分商…

C 共用体

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。 定义共用体 为了定义共用体,您必须使用 u…

SpringBoot多数据源配置及使用

1.application.properties数据配置 首先现在配置文件中定义三个数据库相关信息 # 数据库1 targetLibraryMain.datasource.url jdbc:kingbase8://127.0.0.1:54321/DATA_ONE?useUnicodetrue&characterEncodingutf8&serverTimezoneGMT%2B8&allowMultiQueriestrue …

JavaScript核心基础(李立超2022版)

2022年李立超老师最新JavaScript基础主要内容包括: JS基本语法、变量、数据类型(原始值和类型转换等)、运算符、流程控制语句、对象、 函数(箭头函数、作用域、作用域链、高阶函数、闭包、递归等)、 面向对象(类、属性…

山 蓝桥杯 java

题目 这天小明正在学数数。 他突然发现有些正整数的形状像一挫 “山”, 比如 123565321、 145541123565321它 们左右对称 (回文) 且数位上的数字先单调不减, 后单调不增。 小朋数了衣久也没有数完, 他惒让你告诉他在区间 [2022,2022222022] 中有 多少个数的形状像一座 “山”。…

19(20)-1(3)-CSS3 平面 2D 变换+CSS3 过渡

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍一、CSS3 平面 2D 变换💎1 坐标轴💎2 transform 语法…

KubeSphere 社区双周报|2024.03.29-04.11

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.03.29-04.11…

简单了解仿真测试

仿真测试是通过使用模型或者虚拟环境来模拟实际系统的行为和性能。它可以应用于各种领域,包括软件开发、工程设计、人工智能等等。 通常,仿真测试包括以下几个步骤: 确定测试目标: 首先确定要测试的系统或组件,并且明…

moment

文章目录 时间格式化 时间格式化 moment().format(YYYY-MM-DD HH:mm:ss)

C/C++ 入门(5)内存管理

个人主页:仍有未知等待探索-CSDN博客 专题分栏:C 欢迎指教! 目录 一、内存分布 二、C中动态内存管理 new delete 三、C语言的动态内存管理 四、operator new 和operator delete函数 operator new operator delete 五、new和delete的…

Kafka概述

目录 1、为什么需要消息队列(MQ) 2、使用消息队列的好处 3、消息队列的两种模式 4、Kafka 定义 5、Kafka 简介 6、Kafka 的特性 7、Kafka 系统架构 8、Partation 数据路由规则 9、分区的原因 1、为什么需要消息队列(MQ) …

细胞世界:4.细胞分化(划区域)与细胞衰老(设施磨损)

(1)细胞凋亡 1. 概念:细胞凋亡可以比作城市的规划者主动拆除某些建筑来更新城市或防止危险建筑对市民的潜在伤害。这是一个有序的过程,由城市(细胞内部)的特定规划(基因)所决定。 2. 特征:细…