类和对象、包等知识总结Java

类的概念:类是用来对一个实体(对象)进行描述的,主要描述该对象的属性,功能等。

类的定义和实例化

定义

定义类需要用到class关键字

(大驼峰定义)for example:class Dog...

初步了解一下:

Dog为名字,{}内部为类的主体

class Dog{
public int a;
private double b;
float c;
public Dog(int a,double b,float c){
this.a=a;
this.b=b
this.c=c;
}
public int setA(int a){
return a;
}
...

}

类中的变量称之为成员变量;

要与局部变量做区分,局部变量需要手动初始化才能使用,成员变量如果没有初始化系统将使用默认初始化:

初始化分为就地初始化(创建时直接赋值)、默认初始化,运用构造方法

类中的方法称之为成员方法,类中还有构造方法等

鼠标右键点击包,然后NEw,然后Java class创建类

public class Dog {
    public String color;
    public String gender;
    public int age;
    public String name;

    public Dog(String color, String gender, int age, String name) {
        this.color = color;
        this.gender = gender;
        this.age = age;
        this.name = name;
    }
}
构造方法

这里面有构造方法和成员变量;

构造方法:名字需要与类名一样。

构造方法作用:用于初始化成员变量

类的实例化

用类创建出对象就是类的实例化

实例化对象需要用到new关键字,举例如下:

使用“.”去访问类中的属性和方法(如dog1.age)

this关键字

这两个类区别在于第二个中构造方法中的参数列表名字与成员变量相同;这就涉及到了this关键字。如果没有这个关键字,那么第二个类中初始化就会不成功;this引用指向当前对象(成员方法运行时调用该成员方法的对象)

就像这样,我明明初始化age为18,但就是输出个0;

但我用this后:

用之后相同的名字所代表的含义是不同的,这里this.age指的是dog1中的age

this只能出现在成员方法中,且只能引用当前对象不能引用其他对象,this也不能用于静态区,否则报错   。this依赖于对象!!!!

当this出现在构造方法中,若引用其他构造方法必须在第一行(形式为(this(type x...)),否则报错

封装

访问限定符

可以用于变量,方法,类,(什么不写就是default)

在面向对象体系中,提出了一个软件包的概念,即:为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。在Java中也引入了包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:
个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。

导包

Java 中已经提供了很多现成的类供我们使用. 例如Date类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类.

public class Test {
  public static void main(String[] args) {
    java.util.Date date = new java.util.Date();
    // 得到一个毫秒级别的时间戳
    System.out.println(date.getTime());
 }
}

但是这种写法比较麻烦一些, 可以使用 import语句导入包.

import java.util.Date;
public class Test {
  public static void main(String[] args) {
    Date date = new Date();
    // 得到一个毫秒级别的时间戳
    System.out.println(date.getTime());
 }
}

自定义包

在文件的最上方加上一个 package 语句指定该代码在哪个包中.
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).在文件的最上方加上一个 package 语句指定该代码在哪个包中.
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).

3. 在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名即可

static关键字

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)

Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的。

1. 不属于某个具体的对象,是类方法
2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
3. 不能在静态方法中访问任何非静态成员变量

public static String getClassRoom(){
  System.out.println(this);
  return classRoom;
}
// 编译失败:Error:(35, 28) java: 无法从静态上下文中引用非静态 变量 this
public static String getClassRoom(){
  age += 1;
  return classRoom;
}
// 编译失败:Error:(35, 9)  Java:java: 无法从静态上下文中引用非静态 变量 age

代码块

使用 {} 定义的一段代码称为代码块。根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块、构造块、静态块、同步代码块。

普通代码块:定义在方法中的代码块

构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。

使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

静态代码块不管生成多少个对象,其只会执行一次
静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
实例代码块只有在创建对象时才会执行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop3:客户端向HDFS写数据流的流程讲解(较枯燥)

一、场景描述 我们登陆HDFS的web端,上传一个大文件。 二、流程图 三、讲解 流程1(Client与NameNode交互) 1、HDFS client创建DistributedFileSystem,通过dfs与NameNode进行2次(一来一回4次)对话&#x…

【UE5.1 角色练习】02-添加慢走、快速跑、蹲伏功能

目录 前言 步骤 一、慢走 二、快速跑 三、蹲伏 前言 在上一篇文章基础上(【UE5.1 角色练习】01-使用小白人蓝图控制商城角色移动)继续实现角色的慢走、快速跑以及蹲伏功能 步骤 一、慢走 1. 打开项目设置,添加一个操作映射&#x…

uniapp地图电子围栏(多边形)绘制和编辑

uniapp地图电子围栏(多边形)绘制和编辑 背景实现思路代码实现注意事项尾巴 背景 最近项目中需要在地图上进行电子围栏的绘制和编辑,这里将实现的思路给大家分享下。由于uniapp官方提供的map组件功能不全,还有在APP端(…

Java面试题:Spring框架除了IOC和AOP,还有哪些好玩的设计模式?

Spring是一个基于Java的企业级应用程序开发框架,它使用了多种设计模式来实现其各种特性和功能。本文将介绍一些在Spring中使用的常见设计模式以及相应的代码示例和说明。 单例模式 单例模式是Spring中最常用的设计模式之一。在ApplicationContext中,Bean…

5.8 5.9_C语言(初阶)

1、函数 1.1 函数是什么 数学中就见过函数,例,f(x)2*x1,如果给一个不同的数x,就能得到一个不同的f(x),这就是数学中的函数,其实在C语言中跟这非常相似。 维基百科中对函数的定义:子程序 在计算机科学中&#xff0c…

如何对SQL Server中的敏感数据进行加密解密?

为什么需要对敏感数据进行加密? 近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),给事发公司和被泄露人都带来了不小的影响。 许多国家和地区都出台了个人数据保护的法律法规&#…

25考研英语长难句Day03

25考研英语长难句Day03 【a.词组】【b.断句】 多亏了电子学和微力学的不断小型化,现在已经有一些机器人系统可以进行精确到毫米以下的脑部和骨骼手术,比技术高超的医生用手能做到的精确得多。 【a.词组】 词组翻译thanks to多亏了,由于cont…

vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言,安装的时候语言就选中文就好了。选择中文,在安装的时候就可以选择国内 163 的源。 开启 ssh 功能 先提权,用 root 账户 su安装 ssh 安装 ssh-server apt install openssh-server启动 ssh systemctl start ssh查看 ssh 状态 systemctl st…

淘宝店铺运营爆流课:助你打造高流量店铺,实现销售持续增长(52节课)

课程目录 01【开店类型第1课】货架式店铺.mp4 02【开店类型第2课】短视频店铺.mp4 03【开店类型第3课】直播型店铺.mp4 04【店铺基础操作第1课】如何发布一个成功的宝贝.mp4 05【店铺基础操作第2课】商品SKU设置技巧及库存设置方法.mp4 06【标题】如何制作一个爆款标题.mp…

网络安全大神是怎么炼成的

首先,兴趣是最好的老师,如果你不感兴趣,建议换一个有兴趣的专业,其次,再来说说你是对信息安全感兴趣,想往安全方面走的,我这边给你一些学习建议。 首先,安全这方面的前景是很好的&a…

TopOn 正式聚合Kwai 旗下程序化广告平台——Kwai Network

**我们非常高兴的宣布,TopOn SDK 近日已正式聚合Kwai Network。**作为Kwai 旗下的程序化广告平台,Kwai Network 通过优质的变现能力及产品能力,为广大开发者提供高效及时的服务。 TopOn 聚合平台与Kwai Network 正式完成接入后,开…

上海市嘉定区三德广场屋顶气膜篮球馆

上海市嘉定区三德广场屋顶气膜篮球馆为现代化城市综合体增添了一处先进、环保的运动设施。这座篮球馆不仅为广场周边居民提供了一个全天候的运动场所,也为嘉定区的体育爱好者带来了全新的健身体验。作为轻空间(江苏)膜科技有限公司&#xff0…

Linux系统 的持续学习

昨天学习了目录结构、补充命令和配置网络,其中配置网络用了nat方法,今天学习用桥接方法,通配符、正则表达式的一部分内容。 桥接模式 如果重网卡失败: 1.检查配置文件是否正确 2.检查虚拟器编辑器有没有选对(网卡类…

谷歌外贸seo优化怎么做?

一般有两种选择,在大型电商平台开展业务,如亚马逊,阿里巴巴等平台,也可以选择搭建自己的独立站 选择在大型电商平台可以方便迅速建立起自己的商铺,不需要考虑太多交易,支付,物流等方面的问题&am…

[AI智能摄像头]RV1126部署yolov5并加速

导出onnx模型 yolov5官方地址 git clone https://github.com/ultralytics/yolov5 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 利用代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from m…

[智能AI摄像头]RV1126适配3inch mipi屏幕

3寸屏幕 硬件平台 3寸屏:ST7701S驱动芯片,mipi接口,2lane rv1126:易佰纳38板、正点原子rv1126开发板 所需资料 《屏幕规格书》、《开发板原理图》、《屏幕初始化序列》、《ST7701S数据手册》《rk屏幕相关文档》 驱动板绘制 …

【REST2SQL】14 基于角色的数据权限设计与实现

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

QT状态机10-QKeyEventTransition和QMouseEventTransition的使用

1、QMouseEventTransition的使用 首先明白 QMouseEventTransition 继承自 QEventTransition类。 关于QEventTransition类的使用,可参考 QT状态机9-QEventTransition和QSignalTransition的使用 回顾 QT状态机9-QEventTransition和QSignalTransition的使用 中的状态切换代码,如…

C++动态内存区域划分、new、delete关键字、泛型编程、函数模版、类模版

目录 一、C/C中程序的内存区域划分 为什么会存在内存区域划分? 二、new关键字 1、内置类型的new/delete使用方法: 2、new和delete的本质 3、常见面试题——malloc/free和new/delete的区别 三、模版 1、泛型编程 2、函数模版 (1&…

【C语言】6.C语言VS实用调试技巧(2)

文章目录 6.调试举例17.调试举例28.调试举例3&#xff1a;数组9.编程常⻅错误归类9.1 编译型错误9.2 链接型错误9.3 运⾏时错误 – 6.调试举例1 求 1!2!3!4!…10! 的和。 int main() {int n 0;int i 0;int ret 1;int sum 0;for (n 1; n < 3; n) {for (i 1; i < …