Java中的类(基础详解)

2023-05-16

文章目录

  • 可以有多个类,但只能有一个public类
  • 类 = 字段+方法
  • 类的构造函数
      • 我们没写构造函数的时候
      • 如果我们自己写了构造函数
      • 构造函数中 this 的使用
  • 类的修饰符 / 控制符
      • 第一类:==访问修饰符==
      • 第二类:==其他修饰符 / 非访问控制符==
          • static字段
          • final
          • abstract

java中最常见的就是类,可以说,Java程序是由一个一个的类组成的

在C++中,我们只有在面向对象编程的时候才会用到类,一般想实现某一个功能可以写一个函数。

可以有多个类,但只能有一个public类

在一个 .java 程序中,可以出现多个类,但有且仅有一个类是 public 并且这个public类的名字必须和文件名相同,看图片来的快,有图有真相

在这里插入图片描述

我们看到此时主类的名字和文件名相同,此时没有报错,如果我改一下主类的名字,情况如下

在这里插入图片描述

很明显的报错,下面我们来看看错误原因

在这里插入图片描述

翻译过来就是:hello 类是public的,应该被声明在一个文件名叫 hello.java 的文件中。

下面我们来看一下一个java中有多个类型情况:

在这里插入图片描述

这里就是记住java中可以有多个类,但是只能有一个public类。

因为每一个java程序运行的时候都会先执行public这个类,而且只执行public类中的代码,如果写了其他的类但是在public类中没有用到,就不会执行其他的类,但是这个类的写法必须正确;如果写了其他的类并在public类中使用了其他的类,那么也会执行其他类的相应代码。

而且除public类之外的其他类也可以写在public类的后面,即使在主类中要调用这个类

在这里插入图片描述

代码:

public class Main {
    public static void main(String args[]) {
        System.out.println("hello world!");
        person p=new person();  //创建一个person类
        p.sayhello();  //调用类其中的一个方法
    }
}
class person{
    String name;
    int age;
    void sayhello(){
        System.out.println("嗨嘿嗨");
    }
    void printages(){
        System.out.println(age);
    }
}

我们可以看到在程序截图中可以看到有 1 usage 或者 2 usages ,但是在单纯的代码片段中没有。

这个单词 usage 的意思是 用法,惯例
也可以认为是 仓库中本Jar被其他Jar依赖引用的次数

其实就是某个变量或者函数被使用的次数,这个其实不用管它,影响不大。

类 = 字段+方法

我们举一个类的例子:

class person{
    //name和age属于类中的字段
    String name;
    int age;
    //sayhello()函数属于类的方法
    void sayhello(){
        System.out.println("嗨嘿嗨");
    }
}
  • 字段 是类的属性,是用 变量来表示的。
    我们可以认为类中的变量都属于类的字段,字段有成为 域,域变量,属性,成员变量等
  • 方法 是类的操作和功能,是用函数来表示的。

类的构造函数

类的构造函数可以用来给一个类的数值赋一个初值,用来初始化(new)该类的一个新的对象。

而且构造函数和类名同名,并且不需要写返回值类型

class person{
    String name;
    int age;
    person(String s,int a){  //类的构造函数
        name=s;
        age=a;
    }
    void sayhello(){
        System.out.println("嗨嘿嗨");
    }
    void printages(){
        System.out.println(age);
    }
}

我们没写构造函数的时候

如果我们自己没有写构造函数,那么程序会自动生成一个默认构造函数,这个默认构造函数没有参数,函数中也没有任何语句,也就是相当于什么都不做。
默认生成的类似于这样

person(){}

其实就是什么都没做。

在没写构造函数的时候,初始化一个新对象的时候,不需要写参数
在这里插入图片描述
运行结果
在这里插入图片描述

如果我们自己写了构造函数

那么程序就不会再生成默认构造函数了,在初始化一个对象的时候,就使用咱们自己写的构造函数了,并且如果自己写的构造函数中有参数,必须要加上参数,否则报错,如果本身就没写参数,那么可以不写。

还是看图片来的快

在这里插入图片描述

构造函数中 this 的使用

  1. this 指当前这个对象实例本身

比如说,age=和 this.age 是一样的,都是可以运行的。

void printages(){
        System.out.println(age);
}
void printages(){
        System.out.println(this.age);
}
  1. this 还可以用来解决 局部变量 同名的问题,比如说

这样写也是可以运行的,那么this.name指的就是域变量,name指的就是参数变量。

在这里插入图片描述

person(String name,int age){
        this.name=name;
        this.age=age;
}
  1. 在构造函数中,this 可以调用另一种构造方法,并且这条调用语句必须放在第一句
person(){
	this()
	...
}

类的修饰符 / 控制符

作用:可以修饰类,也可以修饰类中的成员(字段,方法)

第一类:访问修饰符

public, private, protected,

  • private:只能在同一个类中被访问。
  • protected:可以在同一个类中,同一个包中,和不同包中的子类中被访问。
  • public:public的访问范围最广,一般都可以访问。
  • 如果不加修饰符,则只能在同一个类和同一个包中,这2中情况下访问。

类的访问控制符为public或者默认。
如果类用public修饰,则该类可以被其他类所访问。
如果类是默认访问控制符,则改类只能被同包中的类访问。

第二类:其他修饰符 / 非访问控制符

abstract, static, final

  • static:静态的,非实例的,类的
    可以修饰内部类,也可以修饰成员
  • final:最终的,不可改变的
    可以修饰 成员局部变量
  • abstract:抽象的,不可实例化的
    可以修饰 成员
static字段
  • 静态字段最本质的特点是:它们是类的字段,不属于任何一个对象实例
  • 它不保存在某个对象实例的内存区间中,而是保存再类的内存区域的公共存储单元。
  • 类中的static变量可以通过了类名直接访问,也可以通过对象实例来访问,两种方法的结果是相同的
    因为这个static变量是存在最原本的类中的,它本身和用它来实例化的对象都可以访问。
    例如System类的in和out对象,就是属于类的域,直接用类名来访问,即System.in和System.out 。
    再举一个下面的例子:
import java.io.*;

public class Main {
    public static void main(String args[]) {
        person p=new person("ycy",16);  //创建一个person类
        System.out.println(p.age);  //这里用一个实例化的对象来访问类中static字段
        System.out.println(person.age); //这里可以用类名来直接访问类中static字段
    }
}
class person{
    String name;
    static int age;
    person(String name,int age){
        this.name=name;
        this.age=age;
    }
}

输出结果:

在这里插入图片描述

final
  • final类:如果一个类被final修饰符所修饰和限定,说明这个类不能被继承,即不会拥有子类
  • final方法:final修饰符所修饰的方法,是不能被子类所覆盖的方法。
  • final字段和final局部变量:它们的值一旦给定,就不能更改。并且它们是只读量,它们能且只能被赋值一次,不能多次赋值。
  • 如果一个字段被 static final 同时修饰时,它可以表示常量。如果不给定初始值,则按默认值进行初始化(数值为0,boolean类型为false,引用类型为null)
abstract
  • 凡是用abstract修饰符修饰的类被称为抽象类。
  • 抽象类不能被实例化。
  • 抽象类方法在子类中必须被实现,否则子类仍然是abstract的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的类(基础详解) 的相关文章

  • 天翼网关F452超级密码获取(亲测有效)

    在网上找了好久的天翼网关F452超级密码获取的贴 xff0c 终于让我找到了 xff0c 直接进入正题 xff0c 分享以下操作方法 xff0c 便各位还在寻找破解方法的同学学习 step1 xff1a 登录网关地址 xff0c 一般为19
  • 深度学习飞桨实战错误及解决方法

    TypeError randn takes from 1 to 3 positional arguments but 4 were given span class token operator span span class token
  • Ubuntu20.04部署ntp服务

    1 前期准备 系统版本 ip地址 Ubuntu20 04镜像 服务端Ubuntu20 0410 1 0 55ubuntu 20 04 5 live server amd64客户端Ubuntu20 0410 1 0 56ubuntu 20 0
  • GItlab:Internal API available: FAILED - Internal API error 502

    Internal API available FAILED Internal API error 502 背景解决方法 背景 安装gitlab时候 xff0c 8080端口被jenkins应用占用 xff0c 启动gitlab时页面报502
  • 链表逆序

    链表逆序的本质就是把没一个节点原本指向的下一个节点的next指针倒转过来 xff0c 指向它的前置节点 让我们从链表头部开始 xff0c 建立三个临时节点的引用 xff0c 分别为p1 xff0c p2 xff0c p3 它们分别指向头节点
  • ubuntu更改环境变量的几种方式

    Ubuntu设置环境变量的几种方法 1 Linux的变量种类 按变量的生存周期来划分 xff0c Linux变量可分为两类 xff1a 1 1 永久的 xff1a 需要修改配置文件 xff0c 变量永久生效 1 2 临时的 xff1a 使用
  • Python 微信自动化工具开发系列01_自动获取微信聊天信息(2023年1月可用)

    前言 一个需求 需要利用Python 43 第三方库wxauto 用于微信上自动获取聊天信息 xff0c 从而根据自己需求对信息自动进行二次处理 xff0c 比如自动回复 xff0c 再比如自动发送文件或者其他 这边使用Python的第三方
  • Python 微信自动化工具开发系列06_根据用户信息自动回复升级版本(2023年1月可用)

    前言 一个需求 需要利用Python 43 第三方库wxauto 用于微信上自动获取聊天信息 xff0c 从而根据自己需求对信息自动进行二次处理 xff0c 比如自动回复 xff0c 再比如自动发送文件或者其他 记录于2022年08月 20
  • [LeetCode]1237. 找出给定方程的正整数解

    题目链接 xff1a https leetcode cn problems find positive integer solution for a given equation description 题目描述 xff1a 样例1 xff
  • 解决svn: E230001: Server SSL certificate verification failed: certificate has expired

    svn拉代码报错 xff1a Error svn E170013 Unable to connect to a repository at URL svn E230001 Server SSL certificate verificatio
  • QGIS3.10工程结构概述

    在windows下 xff0c QGIS3 10源码包可以通过cmake生成VS项目文件 xff0c 从而可以通过Visual Studio查看工程的代码结构以及编译工程项目 xff0c 方便我们学习和使用qgis 本篇文章将介绍在Visu
  • 洛谷题解P1002_过河卒

    题目描述 棋盘上 A点有一个过河卒 xff0c 需要走到目标 B点 卒行走的规则 xff1a 可以向下 或者向右 同时在棋盘上 C点有一个对方的马 xff0c 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 因此称之为 马拦过河卒 棋
  • 关于NAND代码搬移和跳转到SDRAM的理解

    NAND开始将前4KB代码通过硬件搬移到SRAM中执行 xff0c 这4KB代码中包括一段将NAND全部代码搬移到SDRAM中的代码 xff08 全部代码也包括全面4KB xff09 xff0c 在搬移完成后 xff0c 程序执行到其中一个
  • python 动态导入模块和类

    import importlib module 61 39 db DB 39 if isinstance module str module 61 importlib import module module DBObj 61 getatt
  • mongodb 获取集合所有记录中曾出现过的字段

    switch to the db you 39 re using and type mr 61 db runCommand 34 mapreduce 34 34 myCollectionName 34 34 map 34 function
  • JS 闭包的 9 大经典使用场景

    1 返回值 xff08 最常用 xff09 1 返回值 最常用的 function fn var name 61 34 hello 34 return function return name var fnc 61 fn console l
  • 彻底搞懂JS闭包各种坑

    闭包是js开发惯用的技巧 xff0c 什么是闭包 xff1f 闭包指的是 xff1a 能够访问另一个函数作用域的变量的函数 清晰的讲 xff1a 闭包就是一个函数 xff0c 这个函数能够访问其他函数的作用域中的变量 eg function
  • Anaconda 阿里镜像

    简介 Anaconda是一个用于科学计算的Python发行版 xff0c 支持Linux Mac Windows 包含了众多流行的科学计算 数据分析的Python包 下载地址 xff1a https mirrors aliyun com a
  • python 执行shell 并输出

    def run shell self shell 34 34 34 执行shell并随时打印输出 34 34 34 cmd 61 subprocess Popen shell stdin 61 subprocess PIPE stderr
  • 【Mongo】shell命令行模式执行mongo命令

    例子 xff1a mongo host 172 31 36 77 port 27017 u admin p 39 HpyD9KAd JDkHRY9 39 admin eval 34 db currentOp 34 1 交互式 mongo s

随机推荐

  • 【LeetCode】124. 二叉树中的最大路径和

    题目链接 xff1a 124 二叉树中的最大路径和 题目描述 xff1a 思路 xff1a 这类题目一般可以通过dfs方式完成 xff0c 首先我们明白 xff0c 想要获取这棵二叉树中的最大路径和 xff0c 那么我们需要知道以每个节点为
  • 变更数据捕获(CDC)

    从广泛意义上说 xff0c 全球许多企业每天都需要通过频繁的数据批量处理与加载 xff0c 来定期将数据从一个数据库迁移到另一个数据库 或数据仓库 这类定期批量加载的工作 xff0c 往往既耗费时间 xff0c 又会消耗原始系统的大量处理能
  • C++ string 是否以‘\0’结尾 讨论

    之前在某篇文章中看到 xff0c C语言字符串是以 39 0 39 结尾的 xff0c 但是C 43 43 string类型的字符串并不是以 39 0 39 结尾 话不多说 xff0c 直接放代码 xff08 Cygwin64环境g 43
  • 无法打开内核设备“\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。

    在 VMware 的 vmx 文件中 xff0c vmci0 present 控制虚拟机是否包含 VMCI 设备 如果该参数设置为 true xff0c 则表示虚拟机包含 VMCI 设备 xff1b 如果设置为 false xff0c 则表
  • Docker 推荐使用阿里源

    34 registry mirrors 34 34 https 2h3po24q mirror aliyuncs com 34
  • kali中执行history -c报错

    报错内容 xff1a 34 fc event not found c 34 报错原因 xff1a kali 默认的 shell 环境已经从 bash 更改为 zsh xff0c 而history c需要在bash环境下运行 清除历史命令方法
  • kali安装OpenVAS

    openVAS从10版本后改名GVM xff0c 这里用的kali系统也是2020年的最新系统 安装之前将kali的源换成国内的源 xff0c 像阿里源或中科大源 位置 etc apt sources list 命令 xff1a leafp
  • kali 消除chrome的unlock keyring弹窗

    每次kali上安装chrome后会出现unlock keyring非常烦人 xff0c 在网上找教程也没找到 xff0c 只要ubuntu的按照ubuntu的教程 xff0c 稍加改动后成功解决 安装chrome后 xff0c 第一次打开c
  • 在理解通用逼近定理之前,你都不会理解神经网络

    神经网络力量背后的证据 从字面上看 xff0c 通用近似定理是神经网络起作用的理论基础 简而言之 xff0c 它声明了一个神经网络 xff0c 其中具有一个包含足够但有限数量的神经元的隐藏层 xff0c 可以在激活函数的某些条件下 即 xf
  • 如何获取 Docker 容器的 IP 地址

    1 进入容器内部后 1 cat etc hosts 会显示自己以及 link 软连接的容器IP 2 使用命令 1 2 3 4 5 docker inspect format 39 NetworkSettings IPAddress 39 l
  • Python类定义字类变量与实例变量

    Python类中定义的变量分为类变量和实例变量 xff08 也叫成员变量 对象变量 xff09 xff0c 类变量直接定义在类里面 xff08 不在函数里面 xff09 xff0c 前面不会有一个self修饰 xff1b 相反 xff0c
  • 【牛客网】JZ47 礼物的最大价值

    题目链接 xff1a JZ47 礼物的最大价值 题目描述 xff1a 比较常规的动态规划题目 xff0c 练练手 xff0c 这题目从左上角走到右下角 xff0c 用一个二维dp数组表示从 0 0 走到 n m 获得的最大值 xff0c 状
  • VMware 虚拟机安装 android-x86_64-9.0-r2 后 VirtWifi/无法访问互联网

    原因就是 AOSP 检测网络连接状态的地址用的是谷歌的 xff0c 由于众所周知的原因 xff0c 这个地址无法访问 xff0c 所以提示连接受限 解决办法 xff1a 使用小米的服务器 启动android x86 后 在应用程序列表找到终
  • Dsq: 用于针对JSON、CSV、Excel、Parquet等运行SQL查询的命令行工具

    目录 About Install macOS Homebrew macOS Linux和WSL上的二进制文件 Windows上的二进制文件 xff08 非WSL xff09 从源代码生成和安装 Usage Pretty print dsq的
  • PartiQL 对 SQL 的扩展,可以查询非结构化的数据

    目录 开始 先决条件 下载 PartiQL CLI 运行 PartiQL CLI 窗户 macOS xff08 Mac xff09 和 Unix 命令行教程 介绍 PartiQL 查询与 SQL 兼容 PartiQL 数据模型 xff1a
  • 第1期-通过携程爬取机票价格

    首先我们先找到携程机票的地址 携程机票的地址为 xff0c https flights ctrip com online list oneway a b depdate 61 c 其中 xff0c a为起始地 xff0c b为目的地 xff
  • 在VSCode上运行C/C++程序【满满的“肝”货】

    文章目录 一 下载与安装vscode 61 61 下载 61 61 61 61 安装 61 61 二 配置编译器MinGW1 下载2 解压3 添加环境变量 三 安装vscode插件1 安装Chinese2 安装c c 43 43 四 运行c
  • python的print输出如何不换行

    在python的中使用的print函数 xff0c 如果只是输出内容 xff08 包括整型数 xff0c 浮点型 xff0c 字符串等 xff09 xff0c 那么在这一行语句结束之后 xff0c print会自动换行 span class
  • 将.py文件转化为.exe文件

    将 py文件转化为 exe文件首先需要第三方库 pyinstaller 1 如果没有安装pyinstaller xff0c 则在命令提示符输入 pip installer pyinstaller 如果已安装 xff0c 则会显示 表示这几个
  • Java中的类(基础详解)

    文章目录 可以有多个类 xff0c 但只能有一个public类类 61 字段 43 方法类的构造函数我们没写构造函数的时候如果我们自己写了构造函数构造函数中 this 的使用 类的修饰符 控制符第一类 xff1a 61 61 访问修饰符 6