05—面向对象(上)

news2024/11/24 10:40:59

一、面向对象编程

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.coloradmin.cn/o/1588958.html

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

相关文章

PolarDB for PostgreSQL 有意思吗? 有意思呀

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

未佩戴厨师帽识别检测 厨房管理系统 自动监测未佩戴厨师帽行为 实时报警

在厨房环境中,佩戴厨师帽对于食品安全和卫生至关重要。厨师帽能够有效地防止头发、皮屑等杂质掉入食物中,减少了食品受到污染的可能性,从而保障了食品安全。特别是在学校、餐厅等场景中,对于未佩戴厨师帽的检测更是必不可少。相关…

《哈迪斯》自带的Lua解释器是哪个版本?

玩过《哈迪斯》(英文名:Hades)吗?最近在研究怎么给这款游戏做MOD,想把它的振动体验升级到更高品质的RichTap。N站下载了一些别人做的MOD,发现很多都基于相同的格式,均是对游戏.sjon文件或.lua文…

洛谷-P1036 [NOIP2002 普及组] 选数

P1036 [NOIP2002 普及组] 选数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std; const int N30; int n,r; int g[N]; //存用户输入的数 int arr[N]; //存答案 int res0; //存种类数bool is_prime(int y){ //求素数if(y<2){…

DC-2渗透测试复现

DC-2渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-ssh连接-git提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_2(192.168.85.132) 复现&#xff1a; 一.信息收集 nmap -sP 192.168.85.0/24 …

人工智能时代创作者的抗议!

创造力作为人类智力结构中的璀璨瑰宝&#xff0c;一直以来被视为推动文明进步和社会演进不可或缺的关键要素。难以设想一个没有创造力的世界会是怎样一番景象——那或许是一个机械单调的社会&#xff0c;科技创新止步不前&#xff0c;文化艺术枯竭凋零&#xff0c;人们的精神世…

蓝桥杯 子串简写(暴力)

题目&#xff1a;子串简写 代码1&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue> #include<cmath>using namespace std;char c1,c2; int k; char s[100010]; int a[100010]; int b[100010]; int cnt; …

【YOLOv9改进[损失函数]】使用结合InnerIoU和Focaler的各种损失函数助力YOLOv9更优秀

目录 一 回归损失函数&#xff08;Bounding Box Regression Loss&#xff09; 1 Inner-IoU 2 Focaler-IoU&#xff1a;更聚焦的IoU损失 二 改进YOLOv9的损失函数 1 总体修改 ① utils/metrics.py文件 ② utils/loss_tal_dual.py文件 2 各种机制的使用 ① 使用结合Inn…

Java算法小练习——五道经典算法题

练习一&#xff1a;按照要求进行排序 定义数组并存储一些朋友对象&#xff0c;利用Arrays中sort方法进行排序 要求1&#xff1a;属性有姓名、年龄、身高。 要求2&#xff1a;按照年龄的大小进行排序&#xff0c;年龄一样&#xff0c;按身高排序&#xff0c;身高一样安姓名的字母…

MES对接日常:MES对接单据上下游关联怎么处理?

很多制造企业的信息化过程中&#xff0c;金蝶云星空作为企业资源规划&#xff08;ERP&#xff09;系统的核心&#xff0c;与制造执行系统&#xff08;MES&#xff09;的有效对接&#xff0c;对于实现生产管理的精细化、智能化至关重要。其中&#xff0c;单据关联作为打通ERP与M…

小程序地理位置权限申请+uniapp调用uni.getLocation

文章目录 一、小程序地理位置权限申请二、uniapp调用uni.getLocation 一、小程序地理位置权限申请 需要确保小程序类目已经填写 点击左侧导航栏找到最后的“设置”——“基本设置”——“前往填写” 在开发管理——接口设置——地理位置中可以看到&#xff1a; 即可点击想要申…

基于Springboot的二手交易平台

基于SpringbootVue的二手交易平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录页 首页 商品信息 商品求购 网站公告 留言反馈 个人中心 后台管理 后台首页 用户…

cephfs部署与使用

一、前言 CephFS&#xff08;Ceph File System&#xff09;是Ceph存储解决方案中的一个组件&#xff0c;它提供了一个分布式文件系统&#xff0c;允许用户在多个节点上访问和管理文件数据&#xff0c;相当于是共享文件系统&#xff0c;可应用于k8s的存储&#xff0c;linux系统的…

(Java)数据结构——图(第六节)Dijkstra实现单源最短路径

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 Dijkstra算法&#xff08;Dijkstra的实现原理&#xff09; 迪杰斯特拉算法的实现&#xff0c;很像Prim&#xff0c;基本原理是&#xff1a; 我先找到距离集合路径…

Day93:云上攻防-云服务篇对象存储Bucket桶任意上传域名接管AccessKey泄漏

目录 云服务-对象存储-权限配置不当 权限控制-公共读或公共读写&#xff1a;可完整访问但不显示完整结构目录 权限控制-Bucket授权策略&#xff1a;设置ListObject显示完整结构目录 权限控制-Bucket公共读写权限&#xff1a;公共读写直接PUT文件任意上传 云服务-对象存储-…

秋招算法刷题7

20240410 1.接雨水 方法一&#xff0c;动态规划&#xff0c;时间复杂度O&#xff08;n^2&#xff09;&#xff0c;空间复杂度O&#xff08;n&#xff09; public int trap(int[] height) { int nheight.length; if(n0){ return 0; } …

【报错】TypeError: Cannot read property ‘meta‘ of undefined

&#x1f608;解决思路 首先这里很明显我们能看到是缺少该参数&#xff1a;meta。 但是经过查找后发现和该参数无关。 &#x1f608;解决方法 后来我上网搜了下&#xff0c;网上的回答大部分偏向于是package.json这个文件中的tabBar.list数组对象只有一条的问题。 网上的大…

Nginx小册(博客笔记迁移)

nginx基础 1.常用命令 nginx -v #查看版本 ps -ef | grep nginx #输出linux进程、 nginx #启动nginx进程 nginx -s reload #重载配置 nginx -s stop # 停止进程 nginx -t # 检查是否有语法错误&#xff0c;以及配置文件地址2.nginx的配置文件 # 用户组的设置 windows上不生…

Llama2模型本地部署(Mac M1 16G)

环境准备 环境&#xff1a;Mac M1 16G、Conda Conda创建环境配置 使用Anaconda-Navigator创建python 3.8环境 切换到新建的conda环境&#xff1a; conda activate llama38 llama.cpp 找一个目录&#xff0c;下载llama.cpp git clone https://github.com/ggerganov/llama.…

Java后端平台的搭建

后端开发准备工作(配置Tomcat) 安装tomcat安装jdk 配置JAVA HONE(到java目录),path(到 bin 目录)解压Tomcat进入到bin目录,双击startup.bat启动tomcat访问 ip端口在conf目录的 server.xml配置端口 后端平台的搭建 创建Web项目(前提搭建好Tomcat配置) 注:一定要提前配置好Ma…