首页 > 编程语言 >Java面向对象(高级)

Java面向对象(高级)

时间:2023-05-25 20:01:01浏览次数:33  
标签:初始化 Java 静态 高级 面向对象 实例 static 方法 final

1、类变量

类变量是被类的所有实例共享的。
类变量具体放的位置在哪?在内存中的那个区域,这和jdk的版本是有关的
静态变量在类加载的时候就生成了,即使没有创建类实例也能访问,当然通过实例来实现
4.png

类变量定义
访问修饰符 static 类型 变量名

2、类方法

1、只需要在普通方法前面加上一个static就可以把该方法变成类方法
2、当方法中不涉及任何和对象相关的成员的时候把方法设置成静态方法可以提高效率
3、类方法中不允许使用和对象相关的关键字如this、super

类变量定义
访问修饰符 static 返回值类型 方法名(){}

我们需要记住静态方法只能访问静态成员,非静态可以访问静态和非静态

3、main方法

1、main方法是JVM在调用,访问权限必须是public
2、java虚拟机在调用main方法时不必实例化对象
使用细节
main方法可以直接使用静态成员,但不能直接使用非静态成员,如果要使用非静态成员需要实例化出来一个对象

代码块

代码块相当于构造器(或则说是对构造器的补充),可以做初始化操作
使用方法:当构造器中有多个重复语句时,使用比较方便

//修饰符可以写也可以不写,写的话就只能写static,后面的;可以写也可以不写
[修饰符]
{
};

使用细节
1、如果修饰符是static,那么代码块在类加载时被执行,且只会被执行一次
2、类加载的时间:创建类的实例、创建子类的实例父类也会被加载、使用类的静
3、对象实例化时,类内部的执行顺序:1、静态代码块、静态属性初始化 2、普通代码块、普通属性初始化 3、构造器
4、先加载父类,再加载父类,再初始化父类再初始化子类
5.png

单例设计模式

保证一个类只有一个实例
单例模式分为两种一种是饿汉式、一种是懒汉式
1、将构造器私有化 2、在类的内部直接创建 3、提供一个static方法直接返回创建的对象
懒汉式和饿汉式的区别在于实例化的时间,饿汉式是在类加载的时候就创建了实例,懒汉式是在调用getInstance时才会创建实例
懒汉式不会造成资源的浪费
6.png

final

1、当一个类不希望被其他类继承时,可以在这个类前面加上final
2、当父类的一样方法不希望被重写时,可以用final修饰
3、当类的某个属性不希望被修改时,可以用final修饰,
其实可以这样理解当一个东西不希望被修改时,我们可以final修饰
使用细节
1、final修饰的属性被称为常量一般用大写字母+_组成,而且必须进行初始化
2、如果final修饰的是静态的,那么初始化时只能在定义时或则静态代码段
3、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但却可以继承,子类使用。
4、如果类已经用final修饰了,就没有必要再用final修饰方法了。
5、包装类(Integer,Double,Float,Boolean等都是final),String也是final类。

标签:初始化,Java,静态,高级,面向对象,实例,static,方法,final
From: https://www.cnblogs.com/cxy8/p/17431605.html

相关文章

  • java反射代码案例
    反射案例代码点击查看代码packagecom.bh.zoo;publicclassWolfextendsAnimal{publicStringname;publicStringcolor;protectedStringblood;privateintage;publicvoideat(){System.out.println("狼吃肉");}public......
  • MySQL索引高级进阶详解-玩转MySQL数据库
    前言从今天开始本系列文章就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【1957】字,不说废话,只讲可以让你学到技术、明白原理的纯干......
  • Java比较两个实体属性值是否相同,将不同的属性输出
    /** *比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值 *@paramoldObject进行属性比较的对象1 *@paramnewObject进行属性比较的对象2 *@return属性差异比较结果map */ @SuppressWarnings("rawtypes")......
  • JAVA List和Map切割方法
    importorg.springframework.util.CollectionUtils;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;publicclassCollectionUtil{/***将map切成段,作......
  • java两个对象属性比较
    两个对象进行比较相等,有两种做法:1,情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明2.情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用类反射,具体代码如下:publicstaticvoidmain(String[]args){Aa=newA();a.setUserName(......
  • IDEA下查看Java字节码(插件ByteCode Viewer)
    安装jclasslibbytecodeviewer插件 使用结果......
  • jenkins--构建传输jar包后启动java服务
    jenkins--构建传输jar包后启动java服务目标:针对单体java服务前置条件:jdk1.8日志切割cronologjdk1.8安装cronolog安装创建server.sh脚本文件#!/bin/bashJAR_PATH="/data/forwarder"#文件目录JAR_FILE="ruoyi-admin.jar"#文件名LOG_PATH="/data/forwarder/logs"#cro......
  • [Javascript] Generator with example - 1
    Differencebetween yieldand returnreturnset donetotrue/***Example1*/function*loggerator(){console.log("running");yield"paused";console.log("runningagain");return"stopped";}letlogger=......
  • Java的访问控制修饰符
    为什么使用访问控制修饰符使用访问控制修饰符,主要是为了实现信息的隐藏,在编写程序时,有些核心数据往往不希望被用户调用,需要控制这些数据的访问。对类成员访问的限制,有利于防止对象的误用。只允许通过一系列定义完善的方法来访问私有数据,就可以(通过执行范围检查)防止数据赋予不正......
  • java removeAll 返回2个数组的差集
    注意:removeAll不是差集importjava.util.ArrayList;publicclassImoocStudent{publicstaticvoidmain(Stringargs[]){ArrayList<String>objArray=newArrayList<String>();ArrayList<String>objArray2=newArrayList......