返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java中的类(基础详解)
  • 820
分享到

Java中的类(基础详解)

javajvmc++ 2023-09-01 15:09:59 820人浏览 薄情痞子
摘要

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

文章目录

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的。

来源地址:https://blog.csdn.net/xiatutut/article/details/127061062

--结束END--

本文标题: Java中的类(基础详解)

本文链接: https://lsjlt.com/news/388826.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中的类(基础详解)
    文章目录 可以有多个类,但只能有一个public类类 = 字段+方法类的构造函数我们没写构造函数的时候如果我们自己写了构造函数构造函数中 this 的使用 类的修饰符 / 控制符第一...
    99+
    2023-09-01
    java jvm c++
  • Java基础之Object类详解
    object类的介绍 object是所有类的直接父类或者是间接父类,为什么这么说呢? 可以查询java8的API帮助文档: 可见在这样的一个类树中,所有的类的根还是Object类 ...
    99+
    2024-04-02
  • Java抽象类(基础详解)
    目录 1.概念 2.抽象类的使用 2.1抽象方法 2.2抽象类 2.3抽象类的使用 2.4注意事项 1.概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法,普通方法,static方法,常量和变量等内容...
    99+
    2023-10-21
    java 开发语言
  • Java 基础--Arrays工具类详解
    目录1、数组转换成字符串2、数组转换成集合(1)asList(2)stream 流操作(3)Collections.addAll()3、对数组进行升序排列4、判断数组是否相等5、所有...
    99+
    2024-04-02
  • Java基础类之ArrayUtils工具类详解
    目录1、引入pom依赖2、ArrayUtils中的方法:3、举例总结1、引入pom依赖 <!-- https://mvnrepository.com/artifact/o...
    99+
    2024-04-02
  • java基础开发泛型类的详解
    目录前言泛型概念泛型类结论前言 在软件开发中,有许多执行过程很类似,许多人使用复制粘贴完成功能,这种做法虽然编译器不会报错,但会使用波浪线给出提示,给以后的维护带来了很大的隐患。这种...
    99+
    2024-04-02
  • 【Java 基础篇】Java类加载器详解
    文章目录 导言一、类加载器的概念二、类加载器的工作原理三、类加载器的使用示例四、自定义类加载器总结 导言 Java类加载器(Class Loader)是Java虚拟机(JVM)的一部分,负责将类的字节码加载到内存中,并将其转...
    99+
    2023-08-23
    java 开发语言
  • Java基础类学习之String详解
    目录1 String不可变性2 不可变的好处3 String+和StringBuilder效率差异4 String, StringBuffer and StringBuilder5 ...
    99+
    2022-12-27
    Java String类 Java String
  • Java基础类库之StringBuffer类用法详解
    StringBuffer类 String类是在所有开发项目开发之中一定会使用的一个功能类,并且这个类拥有如下功能 每个字符串的常量都属于一个String类匿名对象,并且不能修改;St...
    99+
    2024-04-02
  • 详解TypeScript的基础类型
    目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和 null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型 // 布尔类型--->boo...
    99+
    2024-04-02
  • Java基础之详解基本数据类型的使用
    一、整型 主要扩展一下不同进制的整型 二进制、八进制、十进制、十六进制 * 二进制 : 0B(数字零+B) 0b(数字零+b) * 八进制 :0(数字零开头) * 十进制 :正常写...
    99+
    2024-04-02
  • js中基础的数据类型详解
    目录六种数据类1、String2、Number3、Boolean4、Null和undefined5、强制类型转换6、将其他的数据类型转换为Number7、将其他的数据类型转换为Boo...
    99+
    2024-04-02
  • 【Java基础】- HttpURLConnection详解
    【Java基础】- HttpURLConnection详解 文章目录 【Java基础】- HttpURLConnection详解一、HttpURLConnection简述二、HttpURLCo...
    99+
    2023-09-09
    java servlet 开发语言 HttpURL
  • 了解java中对象基础Object类
    目录一、Object简述1、显式扩展2、引用与对象二、基础方法1、getClass2、toString3、equals与hashCode4、thread相关5、clone6、fina...
    99+
    2024-04-02
  • Java基础之枚举Enum类案例详解
    目录一、文章序言二、代码实践三、面试相关一、文章序言 Java中引用类型:数组、类、接口、枚举、注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用...
    99+
    2024-04-02
  • Java 基础之内部类详解及实例
     Java 基础之内部类详解及实例内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,...
    99+
    2023-05-31
    java 内部类 ava
  • 【Java 基础篇】Java Collection详解
    文章目录 导言一、Collection 简介二、List 接口三、Set 接口四、Map 接口总结 导言 Java的Collection框架是一组用于存储和操作对象的接口和类。它提供了...
    99+
    2023-09-14
    java 开发语言 jvm
  • 【Java 基础篇】Java Map 详解
    文章目录 导言一、Map 概述二、HashMap三、TreeMap四、LinkedHashMap总结 导言 在Java的集合框架中,Map接口用于存储键值对,提供了一种基于键进行查找和操作的数据结构。Map接口的实现类提供了...
    99+
    2023-08-30
    java 开发语言 数据结构
  • 【Java 基础篇】Java List 详解
    文章目录 导言一、List 概述二、ArrayList三、LinkedList四、Vector总结 导言 在Java的集合框架中,List接口是一个有序、可重复的集合,它扩展了Coll...
    99+
    2023-09-11
    java list 数据结构
  • 【Java 基础篇】Java Set 详解
    文章目录 导言一、Set 概述二、HashSet三、TreeSet四、LinkedHashSet总结 导言 在Java的集合框架中,Set接口是一个无序、不可重复的集合,它扩展了Col...
    99+
    2023-10-18
    java 开发语言 数据结构
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作