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

news2024/12/28 18:22:51

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

类的定义和实例化

定义

定义类需要用到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加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
实例代码块只有在创建对象时才会执行

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

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

相关文章

2024年5月16日 十二生肖 今日运势

小运播报:2024年5月16日,星期四,农历四月初九 (甲辰年己巳月庚辰日),法定工作日。 红榜生肖:猴、鼠、鸡 需要注意:牛、兔、狗 喜神方位:西北方 财神方位:…

【2024年电工杯数学建模竞赛】选题分析+A题B题完整思路+代码分享

.2024年电工杯数学建模AB题选题思路 比赛开始第一时间在下面的资料裙分享: 点击链接加入群聊【2024数维杯数学建模ABC题资料汇总】:http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kBwulH5tSN2X7iLXzZHAJqRk9sYnegd0y&authKey2TSsuOgqXZQ%2FvTX4R59…

ADS使用记录之使用RFPro进行版图联合仿真-加入集总元器件

ADS使用记录之使用RFPro进行版图联合仿真-加入集总元器件 ADS使用记录之使用RFPro进行版图联合仿真中已经简单介绍了使用RFPro对版图就行仿真的方法。但是,如果版图中含有一些非微带的结构,比如说电感、电容、晶体管呢,在此举例解释一下。 …

什么可以替代iframe?

网页嵌套中,iframe曾几何时不可一世,没有其他更好的选择! iframe即内联框架,作为网页设计中的一种技术,允许在一个网页内部嵌套另一个独立的HTML文档。尽管它在某些场景下提供了便利,但也存在多方面的缺陷…

【Python报错】Python安装模块时报错Fatal error in launcher

【Python报错】Python安装模块时报错Fatal error in launcher 最近需要用到python下载一个小工具,自信敲下回车键本想看到黑乎乎的终端上会出现快速跳跃的命令代码,没想到,报错了...... Fatal error in launcher: Unable to create process …

全网最全的基于电机控制的38类simulink仿真全家桶----新手大礼包

整理了基于电机的38种simulink仿真全家桶,包含多种资料,类型齐全十分适合新手学习使用。包括但是不局限于以下: 1、基于多电平逆变器的无刷直流电机驱动simulink仿真 2、基于负载转矩的感应电机速度控制simulink仿真 3、基于滑膜观测器的永…

Unity与Andriod的交互

Unity与安卓的信息交互 这次分享的不同于传统的方式AndroidJavaClass("com.unity3d.player.UnityPlayer") 如果是新手的话,请看 交互新手教程 这里讲的是在Unity中调用java代码,或者在unity中传参到java中,在Java代码中运行。 以下…

二叉树遍历的实现

递归实现 先序遍历 代码实现 存储状态 中序遍历 后序遍历 算法分析 实质 复杂度 非递归算法实现 中序遍历 层次遍历 原理 实现

InfiniGate自研网关实现五

17.核心通信组件管理和处理服务映射 引入模块api-gateway-core 到 api-gateway-assist 中进行创建和使用,并拉取自注册中心的映射信息注册到本地的网关通信组件中。 第17节是在第15节的基础上继续完善服务发现的相关功能,把从注册中心拉取的网关映射信…

基于单片机的智能安防系统设计(32+4G+WIFI版)-设计说明书

设计摘要: 本设计基于STM32单片机,旨在实现一个智能安防系统,主要包括烟雾和温度传感器、人体红外传感器、显示屏、按键、4G模块和WiFi模块等组件。通过这些组件的协作,实现了火灾检测、入侵监测、状态显示、用户交互和远程通信等…

vscode对一些软件的调试插件。

vscode对一些软件的调试插件。 1、ae ,f1然后选择运行 after effect 脚本 2、maya,右键send code to maya 3、max,ctrle运行脚本到max 4、unity 从在Visual Studio代码使用.NET的核心: 1、安装.NET Core SDK,链接: https://dotn…

QT客户端开发的注意事项

QT客户端开发是一个涉及图形用户界面(GUI)设计、网络编程、数据库交互等多个方面的复杂过程。以下是在进行QT客户端开发时应注意的一些关键事项,通过关注这些事项,可以提高QT客户端应用的质量和开发效率。北京木奇移动技术有限公司…

内网安全-隧道搭建穿透上线FRPNPSSPPNgrokEW项目

旨在代理连接肉鸡后实现本地渗透肉鸡网络架构 Linux:Proxychains Windows:Sockscap Proxifier 穿透项目:Ngrok Frp Spp Nps EW(停更) 优点:穿透加密数据,中间平台,防追踪,解决网络问题 https://…

1727jsp思想政治活动Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 思想政治活动管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

Java——继承详解、super 关键字、super和this的异同、protected关键字、final关键字、继承与组合

1、继承的概念: 继承主要解决的问题:共性的抽取,实现代码复用 可以让我们在保持原有类(父类、超类、基类)特性的基础上进行扩展,增加新功能,这样产生新的类,称为派生类&#xff08…

Blender 导入资源包的例子

先到清华源下载资源包: Index of /blender/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 具体地址:https://mirrors.tuna.tsinghua.edu.cn/blender/demo/asset-bundles/human-base-meshes/human-base-meshes-bundle-v1.1.0.zip 解压/hum…

2024数学建模深圳杯B题成品论文43页word+完整可视化结果图+可执行代码

【无水印word】2024深圳杯B题成品论文43页(附带1-4小问完整py解题代码思路)https://www.jdmm.cc/file/2710664 批量工件并行切割下料优化研究 摘 要 本研究针对批量工件并行切割下料问题展开了深入的探讨与分析。通过建立数学模型和运用优化算法&…

如何去除字符串两侧的空白字符?

TRIM函数会去掉字符串左侧和右侧的空格,语法是:TRIM(字符串) excel中,TRIM函数能去掉字符串左侧和右侧的空格,它的ASCII码是32。 以下设定一个字符串组合,它的第一个字符中空格,最后一个字符是换行符 &q…

vue3专栏项目 -- 六、上传组件(上)

1、上传组件需求分析 我们还需要新建和展示文章,新建文章自然是发送post请求,同时在post中自带对应的数据,展示文章就是根据id取出已有的数据并且展示出来。 这里有一个难点就是上传组件,上传文件是App应用中最基本的需求&#…

五丰黎红销量增长的秘诀:一物一码数字化营销开创调味品行业新格局!

根据当今经济环境和未来的发展趋势,传统经济向数字化经济转型的发展方向可以说是大势所趋,如何把握先机,率先迈出数字化转型第一步,可以说是无数传统企业都需要思考的问题。 作为中国调味品行业的佼佼者,五丰黎红踩着时…