06_面向对象高级_static

Flannel,Calico 和 Cilium 之间有哪些优缺点和差别? 例如,在一个多租户的容器集群中,可以通过Calico为不同租户的容器设置精细的访问控制策略,确保每个租户的资源安全。例如,在设置复杂的网络策略和BGP路由时,需要对网络概念和Calico的配置语法有比较深入的了解。它可以根据容器的标签、服务等信息来定义访问规则,并且可以实现更加细粒度的网络安全策略,如HTTP层的策略。性能损耗:在overlay网络模式下(如VXLAN),由于需要对数据包进行额外的封装和解封装操作,会带来一定的性能损耗,尤其是在高流量的场景下,这种性能损耗可能会更加明显。 阅读详情

Static

static 的中文意思是"静态",它可以修饰成员变量、成员方法

1. Static 修饰成员变量
  • static 修饰的成员变量,也称之为"类变量"
  • 类变量它是属于类的,与类一起加载,在内存中只有一份,会被类的所有对象共享
  • 无 static 修饰的成员变量,称之为 " 实例变量 (对象变量) "
  • 实例变量 (对象变量) 是属于对象的,每个对象中都有一份
public class HelloWorld {
    public static void main(String[] args) {
        
        Human.name = "人类";  // 直接通过 "类名.类变量名" 的方式来访问(推荐此方法)
        Human obj = new Human();
        obj.name = "人才";  // 也可以通过 "对象.类变量名" 的方式访问,但是不推荐此方法!
        
    }
}

class Human {
    // 类变量
    static String name;

    // 实例变量(对象的变量)
    int age;
}
2. 类变量的使用场景

在开发中,如果某个数据只需要一份,且希望能够被共享 (访问、修改),则该数据可以定义成类变量来记住。

import java.util.ArrayList;

public class HelloWorld {
    public static void main(String[] args) {
        // 创建一个集合,用来存放对象
        ArrayList list = new ArrayList();

        System.out.println(Human.number);  // 0
        for (int i = 0; i < 5; i++) {
            Human obj = new Human();
            list.add(obj);
        }
        System.out.println(Human.number);  // 5
    }
}

class Human {
    // 类变量
    static int number;  // 没必要自己手动初始化,因为默认自动初始化为 0

    public Human() {
        Human.number++;
        // 在同一个类中,访问自己类的类变量,可以省略不写前面的 Human
        // 即:可以将 Human.number++ 写成 number++
    }
}
3. static 修饰成员方法
  • 类方法:有 static 修饰的成员方法,属于类
  • 实例方法:无 static 修饰的方法,属于对象
public class HelloWorld {
    public static void main(String[] args) {
        Human.printHelloWorld();  // 直接通过"类名.类方法名"进行调用(推荐使用此方法)
        Human obj = new Human();
        obj.printHelloWorld();  // 不推荐使用此方法
        obj.printGood();
    }
}

class Human {
    // 类方法
    public static void printHelloWorld() {
        System.out.println("Hello World");
    }

    // 实例方法(对象的方法)
    public void printGood() {
        System.out.println("Good");
    }
}
4. 类方法的使用场景
  • 类方法最常见的应用常见是做工具类

  • 什么是工具类?

    简单的说,就是创建一个类,在里面写一些功能,方便别人去调用你写的工具;

    而在工具类中,使用的方法都是一些类方法,而不是实例方法

    因此,工具类没有创建对象的需求,建议将工具类的构造器进行私有,从而禁止他人创建对象

    另外要注意的是,一般情况下,每个方法都是用来完成一个功能的。

  • 为什么工具类中的方法要使用类方法,而不用实例方法?

    首先,实例方法确实也能够实现做工具类,但是!实例方法需要创建对象来调用,而如果大费周章创建了一个对象,却只是为了用它来调用实例方法,在操作上看,这是多此一举,在内存上看,它还浪费了内存。

  • 使用类方法设计工具类的好处

    提高了代码的复用;调用方便,提高了开发效率。

5. 代码块

概述:代码块是类的5大成分之一(成员变量、方法、构造器、代码块、内部类)

代码块分两种

  • 静态代码块:static { }

    特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次

    作用:完成类的初始化,例如:对类变量的初始化赋值

  • 实例代码块:{ }

    特定:每次创建对象时,都会先执行实例代码块,再执行构造器

    作用:和构造器一样,都是用来完成对象的初始化操作的,例如:对实例变量进行初始化赋值

public class HelloWorld {
    public static void main(String[] args) {
        // 先加载一次类,执行一次 static{},再同步执行 Human.number
        System.out.println(Human.number);
        System.out.println(Human.number);
        System.out.println(Human.number);

        // 实例代码块——功能演示
        Human obj = new Human();
        Human obj2 = new Human(25);
        
        // 程序运行结果:
        /*
            静态代码块执行了~~
            1
            1
            1
            警告!有人创建了对象!对象内存地址: login.Human@682a0b20
            此人使用了[无参]构造器创建对象
            警告!有人创建了对象!对象内存地址: login.Human@3d075dc0
            此人使用了[含参]构造器创建对象
        */
    }
}

class Human {
    static int number;

    // 静态代码块
    static {
        System.out.println("静态代码块执行了~~");
        number++;
    }

    // 实例代码块
    {
        System.out.println("警告!有人创建了对象!对象内存地址: " + this);
    }

    public Human() {
        System.out.println("此人使用了[无参]构造器创建对象");
    }

    public Human(int age) {
        System.out.println("此人使用了[含参]构造器创建对象");
    }
}
6. 单例设计模式

什么是设计模式?

  • 一个问题通常有n种解法,其中肯定是有一种最优解法,这种解法被人总结出来了,称之为设计模式
  • 设计模式有20多种,对应20多种软件开发中会遇到的问题

单例设计模式

  • 要求:确保一个类只有一个对象
  • 饿汉式单例:拿对象时,对象早就创建好了
  • 懒汉式单例:拿对象时,才开始创建对象
  • …
// 饿汉式单例

public class HelloWorld {
    public static void main(String[] args) {
        Human obj1 = Human.getObj();
        Human obj2 = Human.getObj();
        System.out.println(obj1 == obj2);  // true
    }
}

class Human {
    private static Human obj = new Human();  // 此行代码只会在类加载时,执行一次

    private Human() {
        
    }

    public static Human getObj() {
        return obj;
    }
}
// 懒汉式单例

public class HelloWorld {
    public static void main(String[] args) {
        Human obj1 = Human.getObj();
        Human obj2 = Human.getObj();
        System.out.println(obj1 == obj2);  // true
    }
}

class Human {
    private static Human obj;

    private Human() {

    }

    public static Human getObj() {
        if (Human.obj == null) {
            obj = new Human();
        }
        return obj;
    }
}
【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索 横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。 阅读详情

相关推荐

ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题

多景影像无缝镶嵌色差问题拟解决方法

Matchaya的博客 7703

【Java面向对象高级06】static的应用知识:代码块

记录static的应用知识:代码块一、代码块概述代码块是类的5大成分之一(成员变量,构造器,方法,代码块,内部类)。1、代码块分为:静态代码块和实例代码块2、在实例化的时候就会被调用,静态代码块只会执行一次,实例代码块在实例化的时候,就会被执行。

weixin_45272371的博客 429

OAI骨关节炎数据集申请与DICOM下载全流程避坑指南

医学影像分析中,DICOM格式是存储与交换CT、MRI等数据的通用标准,其元数据Tag承载着像素间距、层厚等关键物理信息,直接影响定量分析的准确性。在骨关节炎研究领域,OAI数据集因样本量大、随访时间长而成为高价值资源,但获取需通过NDA协议申请,并借助nda-tools命令行工具完成TB级影像的批量下载与断点续传。这一流程涉及浏览器环境配置、DICOM格式转换及Python预处理等工程环节,任一细节疏漏都可能导致数据读取异常或分析偏差。掌握从申请到落地的完整链路,能显著提升医学影像AI研究的效率与可复现性

weixin_30843121的博客 275

day06-07面向对象(高级)

继承是面向对象三大特征之一。(封装,继承,多态)可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。在Math源码中 有个值这个值不能改变final关键字是最终的意思,可以修饰成员方法,成员变量,类final修饰的特点修饰方法:表明该方法是最终方法,不能被重写修饰变量:表明该变量是常量,不能再次被赋值修饰类:表明该类是最终类,不能被继承举例: dog类和cat类都会吃 能不能把吃这个方法提取到父类animal中?什么是抽象类?一种特殊的父类 里面可以写抽象方法什么是。

qq_74289024的博客 801

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

深入解析进化算法中的选择与多样性

在计算科学的世界里,最优雅的解决方案往往源于最古老的智慧——大自然。进化算法(Evolutionary Algorithms, EAs)正是这样一种受达尔文自然选择学说启发的强大工具。它们通过模拟“适者生存”的过程,在庞大的可能性海洋中搜寻最优解。。:指的是深入挖掘和优化已知的优质解。这就像在一片已知的沃土上精耕细作,力求获得最高产量。强大的选择压力会促进这一过程。:指的是在整个搜索空间中寻找全新的、可能更优的解。这好比派遣探险队去发现新大陆,充满了未知与机遇。保持种群的多样性是探索的关键。

weixin_62533513的博客 716

06-面向对象高级01

Java继承摘要: 继承通过extends关键字实现类与类之间的父子关系,子类可以直接使用父类非私有成员,提高代码复用性。子类可重写父类方法(Override),需保持方法声明一致,访问权限不能低于父类。子父类同名成员变量遵循就近原则,可用super访问父类成员。构造方法不被继承,子类构造默认调用super()先初始化父类。继承具有单继承特点,支持多层继承。案例展示了员工、程序员和项目经理的继承关系,子类通过重写work()方法实现多态行为。

2404_87143740的博客 423

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

面向对象_高级1

静态代码块是使用。

一枚工科研究生 938

从理论到代码:如何用随机矩阵理论(RMT)优化你的微生物共现网络分析?

本文详细介绍了如何利用随机矩阵理论(RMT)优化微生物共现网络分析,解决传统阈值法的主观性和不稳定性问题。通过R语言实现端到端的分析流程,包括矩阵标准化、本征值谱分析和自动阈值确定,显著提升网络构建的准确性和可靠性。该方法特别适用于高通量测序数据,能自动识别噪声与真实信号的边界,为微生物组学研究提供更精确的互作网络分析工具。

weixin_29096377的博客 361

Ardupilot chibios IO固件,IO与FMU通信,固件下载(3)

目录 文章目录目录摘要 摘要 本节主要记录自己学习IO与FMU通信

陌城烟雨 2800

Day06 面向对象基础结束→高级开始

继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员继承的是【属性定义】,不是【属性值】子类不用重复写String name;int age...子类可以直接setName,此时设置的是子类自己的,跟父类无关父类可以直接setName,此时设置的是父类自己的,跟子类无关。

liang_jing_的博客 381

nRF52832——大量数据传输时导致蓝牙断开连接,且无法被搜索到的解决方案(广播参数的设置、程序设计方法)

有时蓝牙通信单次发送数据量较大,且连续发送多次的时候,你会发现蓝牙就会出现异常,可能运行30min,40min,或者1h后,蓝牙就不能传输数据了,且无法被搜索到,用主机扫描蓝牙时可能会提示类似这样的DEBUG信息:bta_gattc_mark_bg_conn unable to find the bg connection mask for bd_addr=xx:xx:xx:xx:xx:xx。

数字世界 万物互联 2004

第08章_面向对象编程(高级)拓展练习(关键字:static,代码块,关键字:final,抽象类和抽象方法,接口,内部类,枚举类,注解,包装类)

1、银行账户类2、图形类3、数组工具类4、二分查找5、二分查找6、素数

小丁的博客 1252

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java学习day06

被abstract修饰的方法称之为抽象方法,抽象方法只能在抽象类或者接口中被abstract修饰的类称之为抽象类,抽象类也是一个类抽象类不能创建对象,但是有构造方法抽象类可以定义成员方法抽象类不能直接实例化,需要使用向上转型子类在继承抽象类之后必须重写其中的抽象方法,除非子类本身也是抽象类抽象类一定不是最终类,因为抽象类需要被继承抽象方法可以被重载,但是子类必须实现所有的抽象方法。抽象方法必须被继承和重写,所以不能被final/static/private。

2302_77734990的博客 2505

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java基础复习(JavaSE高级)第一章:面向对象高级部分

多态的格式可以为以下两种格式:父类名称 对象名 = new 子类名称();接口名 对象名 = new 实现类名称();我们敲如下代码在这里,people既可以是老师,又可以是学生,体现了对象多态两个人都调用同一个行为run方法,但是同一个run在不同的人下有着不同的反馈,体现了行为多态。三点前提,理解记忆例题:注意B选项,多态确实要有方法重写,但是不重写不会报错的。

qq_74196888的博客 935

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

面向对象进阶:static、单例、代码块、继承

在本篇博客中,我们将深入探讨Java中的几个重要概念:`static`关键字、单例模式、代码块、以及继承。通过这些示例,我们可以看到Java中的高级面向对象编程概念如何应用于实际开发中,提高代码的灵活性和可维护性。代码块是类的五大成分之一(成员变量、构造器、方法、代码块、内部类),定义在类中方法之外。子类继承父类后,可以直接使用父类的属性和方法,但不能继承父类的构造器。静态变量(类变量)在内存中只占用一份空间,并且被类的所有实例共享。继承允许一个类获取另一个类的属性和方法,从而提高代码复用性。

2302_80084329的博客 336

06_java零基础入门_面向对象1

1.变量 a.变量三要素:变量类型 变量名 作用范围/生命周期 b.变量分为局部变量和成员变量(全局变量、实例变量) 局部变量:声明在方法中或者代码块中的变量称为局部变量。 只在声明当前声明的方法中有效,出了方法之后啥也不是。 代码块:以一个大括号组成的一个代码段称为代码块。 成员变量:声明在类中,类中方法的外面,在整个类当中都有效。 注意:下面的这种报错原因是由于static...

weixin_42371832的博客 195

java认证课程06

第六章 高级语言特征本模块讨论Java编程语言更多的面向对象特征。第一节  相关问题    讨论-下述问题与本模块中出现的材料相关:-         如何保持一个类或方法不被分成子类或被覆盖?-         如何将数组概念的使用扩展到对象? 第二节  目 的    完成本模块的学习后,应该能-         描述static变量,方法和初始程序-  

candyfudp的专栏 1108

C#笔记06 面向对象和类

从单例模式初步理解了设计模式存在的意义。

记录学习痕迹的公众号:Piper蛋窝 436

Java基础——面向对象编程高级(常见关键字)

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。我们声明一些几何图形类:圆、矩形、三角形类等,发现这些类都有共同特征:求面积、求周长。那么这些共同特征应该抽取到一个共同父类:几何图形类中。但是这些方法在父类中又无法给出具体的实现,而是应该交给子类各自具体实现。那么父类在声明这些方法时,就只有方法签名,没有方法体,我们把没有方法体的方法称为抽象方法。

Yc317900的博客 1501

狂神说--javase06--面向对象编程

1

Mar.三月 499

侯捷-C++面向对象高级开发-上

侯捷老师经典课程《C++ 面向对象高级开发(上)》的个人学习笔记

weixin_56148345的博客 309

B站宋红康JAVA基础视频教程个人笔记chapter07(面向对象高级)

1.static用来修饰的结构:属性,方法;代码块,内部类;2.用static修饰的成员变量,叫做类变量3.整个内存就一份,被类的多个对象所共享4.静态方法内可以调用静态的属性和其他的静态方法,不能调用非静态结构5.static修饰的方法内不能调用this和superint age;

aloha 1070

java面向对象06_静态变量(static关键字)

在类中(方法之外),用static修饰的变量我们称之为静态变量或类变量。 切记:static不能用于修饰局部变量!!! 1.静态变量特点 静态变量优先于对象存在,静态变量随着类的加载就已经存在了。 一个类中,静态变量只有一份,可以被该类和该类的对象所共享。 我们可以通过 类名.静态变量 或 对象.静态变量 来操作静态变量。 2.静态变量内存图 我们在类中声明的静态变量存储在方法区中...

安德的博客 319

2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

今日内容介绍 1、final 关键字 2、static 关键字 3、匿名对象 4、内部类 5、包的声明与访问 6、访问修饰符 7、代码块 第一节课 01(面向对象)final关键字概念.avi 02:20 02(面向对象)final修饰类.avi 04:25 03(面向对象)final修饰方法.avi 04:01 04(面向对象)final修饰局部变量.avi 05:57 05(面向对象)fina...

weixin_30670965的博客 172
上一篇: 05_常用API
下一篇: 07_面向对象高级_继承
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值