做网站的核验单 是下载的吗/站长工具seo综合查询腾讯
static特点
Java中的static关键字允许在没有创建类的实例的情况下进行调用。以下是static关键字的主要用途和特点:
- 静态变量(类变量):使用static关键字声明的变量称为静态变量或类变量。这些变量属于类本身,而不是类的任何特定实例。因此,它们可以在没有创建类的实例的情况下被访问和修改。
- 静态方法:同样,用static修饰的方法称为静态方法。这些方法不依赖于类的实例,可以直接通过类名调用,而不需要创建类的实例。静态方法通常用于执行与类的实例无关的操作,比如工具方法或者对静态变量的操作。
- 静态代码块:静态代码块是在类加载时由Java虚拟机(JVM)自动执行的代码块。它通常用于初始化静态变量或者执行只需要一次的设置操作。
- 类加载时机:由于静态成员在类加载时就被初始化,因此它们的加载时机比实例成员早。这意味着在创建对象之前,静态成员已经被初始化并可以使用。
- 无需实例化:静态成员和方法的一个关键优点是它们可以在没有创建类的实例的情况下使用。这在某些情况下非常有用,比如当你想要在创建任何对象之前运行某些代码或者当你需要一个不依赖于任何特定实例的功能时。
- 全局访问性:静态成员虽然可以通过类名直接访问,但它们并不是真正意义上的全局变量。它们的作用域限制在定义它们的类中,但是它们可以被类的所有实例共享。
public class MyClass {// 静态变量public static int staticVar = 10;// 静态方法public static void staticMethod() {System.out.println("这是一个静态方法");}public static void main(String[] args) {// 访问静态变量和静态方法System.out.println("静态变量的值为:" + MyClass.staticVar);MyClass.staticMethod();}
}
静态方法静态变量的访问
public class MyClass {// 静态变量public static int staticVar = 10;// 静态方法public static void staticMethod() {System.out.println("这是一个静态方法");}public static void main(String[] args) {// 访问静态变量System.out.println("静态变量的值为:" + MyClass.staticVar);// 调用静态方法MyClass.staticMethod();}
}
在上面的示例中,我们定义了一个名为MyClass
的类,其中包含一个静态变量staticVar
和一个静态方法staticMethod
。在main
方法中,我们通过类名MyClass
直接访问了静态变量和静态方法,而不需要创建类的实例。
请注意,静态方法和静态变量属于类本身,而不是类的实例。这意味着它们可以在没有创建类的实例的情况下被访问和修改。
继承
在Java中,继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。以下是Java继承的关键特点:
继承机制:
- 使用
extends
关键字实现类的继承。 - 子类继承父类后,会自动拥有父类的所有成员变量和方法,除了私有的(private)成员。
方法重写:
- 子类可以重写(Override)从父类继承来的方法,以提供特定于子类的行为。
单继承限制:
- Java只支持单继承,即一个子类只能有一个直接的父类。但是,可以通过接口实现多重继承的效果,因为一个类可以实现多个接口。
构造方法:
- 构造方法不是继承的一部分,子类不能继承父类的构造方法,但可以在子类的构造方法中调用父类的构造方法。
提高代码复用性:
- 继承可以减少代码冗余,提高程序的可维护性和开发效率。
is-a关系:
- 继承应该用于实现"是一个"(is-a)关系,即子类应该是父类的一个更具体的版本。
super关键字:
- 在子类中,可以使用
super
关键字来引用父类的成员变量和方法。
耦合性问题:
- 继承可能会增加类之间的耦合度,这可能导致代码之间的联系过于紧密,影响代码的独立性。
格式及案例
Java继承的格式如下:
class 子类 extends 父类 {// 子类的代码
}
下面是一个Java继承的案例:
class Animal {void eat() {System.out.println("Animal is eating");}
}class Dog extends Animal {void bark() {System.out.println("Dog is barking");}
}public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.eat(); // 调用父类的方法dog.bark(); // 调用子类的方法}
}
在这个案例中,Dog
类继承了Animal
类。Dog
类可以访问Animal
类中的eat()
方法,并且还可以定义自己的方法bark()
。在Main
类的main
方法中,我们创建了一个Dog
对象,并分别调用了eat()
和bark()
方法。
子类不能继承父类的内容
在Java中,子类继承父类时,有一些特定的成员是无法直接继承的,以下是这些情况:
私有成员(Private Members):
- 私有成员变量和方法在父类中是不能被子类继承的。它们只能在声明它们的类内部访问。
构造方法(Constructors):
- 构造方法不是继承的一部分,因此子类不会继承父类的构造方法。如果子类需要调用父类的特定构造方法,它必须通过
super
关键字显式地调用。
静态初始化块(Static Blocks):
- 静态初始化块是在类加载到内存时执行的代码块,它们不是对象的状态的一部分,因此不会被继承。
final成员(Final Members):
- 被
final
修饰的成员变量和方法不能被子类修改。虽然子类可以继承final
变量的值和final
方法的实现,但是子类不能改变这些成员的值(对于变量)或者重写这些方法(对于方法)。
私有内部类(Private Inner Classes):
- 私有内部类只能在其封闭类中访问,因此它们不会被继承。
默认方法(Default Methods)的实现:
- 在接口中,默认方法是可以被实现类修改的,但是在继承时,子类不会自动继承默认方法的实现,除非子类选择显式地提供自己的实现。
父类的初始化和清理操作:
- 子类不会继承父类的初始化和清理操作,例如在父类中定义的
init()
和cleanup()
方法。
匿名类和局部类:
- 匿名类和局部类通常用于特定的上下文,它们不会被继承。
父类的实例创建:
- 子类不会继承父类的实例创建逻辑,如果子类需要创建父类的对象,它必须自己创建。
继承的成员变量、成员方法、构造方法的特点
在Java中,继承后的成员变量和成员方法具有以下特点:
成员变量的访问:
- 隐藏原则:如果子类中定义了与父类相同名称的成员变量,那么子类中的变量会隐藏父类中的同名变量。
- 访问权限:子类可以直接访问父类的非私有成员变量,但不能直接访问父类的私有成员变量。如果需要访问,可以通过父类提供的公共方法进行访问。
- 就近原则:在查找成员变量时,Java遵循“就近原则”,即先查找本类的成员变量,如果没有找到,则继续向上查找父类的成员变量,直到Object类。
成员方法的访问:
- 方法重写(Override):如果子类中定义了与父类相同签名的方法,那么子类的方法会覆盖父类中的同名方法。这是多态的一种体现,允许子类提供特定于自己的行为实现。
- 调用父类方法:子类可以通过
super
关键字调用父类中的方法,即使子类中存在同名方法。这在子类需要使用父类的方法逻辑时非常有用。 - 方法调用顺序:当通过对象调用方法时,Java虚拟机(JVM)会从该对象的实际类型开始查找方法,如果找到了就调用,找不到则向上查找父类的方法,直到Object类。
构造方法的特点:
- 必须调用基类的构造方法:子类的构造过程中需要调用其基类的构造方法。这是因为子类继承了父类的属性和方法,需要确保父类的部分得到适当的初始化。
- 隐式调用:如果子类的构造方法中没有显示地调用基类构造方法,Java编译器会默认插入一个对基类无参数构造方法的调用。这意味着,如果父类中没有无参数的构造方法,而子类又没有显式地调用其他构造方法,将会导致编译错误。
- 使用super关键字:子类可以通过
super(argument_list)
的形式显式地调用父类中的某个特定的构造方法。这样做可以让子类在初始化时执行父类中的特定行为。 - 构造方法的访问规则:子类构造方法中调用父类构造方法是通过
super
关键字实现的,这个调用必须是子类构造方法的第一条语句。这样的设计保证了父类部分总是在子类部分之前被初始化。 - 单继承的限制:Java语言支持单继承,即一个类的直接父类只能有一个。但是,一个父类可以有多个子类,这样形成了一个树状的继承结构。
- 多级继承:尽管Java只支持单继承,但可以通过多级继承来实现复杂的类层次结构。在这种结构中,一个子类可以继承另一个子类,形成一个继承链。
super关键字
在Java中,super
关键字是一个指向父类对象的引用。它主要用于以下几个方面:
-
调用父类构造方法: 使用
super()
可以在子类的构造方法中调用父类的构造方法。这通常用于初始化从父类继承来的成员变量。class Parent {public Parent() {System.out.println("Parent constructor");} }class Child extends Parent {public Child() {super(); // 调用父类的构造方法System.out.println("Child constructor");} }
-
访问父类成员方法: 使用
super
可以访问父类的成员方法,即使子类重写了这些方法。class Parent {void display() {System.out.println("Parent's display method");} }class Child extends Parent {void display() {super.display(); // 调用父类的display方法System.out.println("Child's display method");} }
-
访问父类成员变量: 使用
super
可以访问父类的成员变量,但如果变量在子类中被隐藏(即子类中有同名的变量),则必须使用super
来引用父类的变量。class Parent {int x = 10; }class Child extends Parent {int x = 20;void printX() {System.out.println("Parent's x: " + super.x); // 访问父类的xSystem.out.println("Child's x: " + x); // 访问子类的x} }
-
限定超类中的方法调用: 当子类覆盖了父类的方法,并且需要在同一个方法内部调用父类的方法时,
super
可以用来限定调用的是父类的方法。class Parent {void someMethod() {System.out.println("Parent's implementation");} }class Child extends Parent {void someMethod() {super.someMethod(); // 调用父类的someMethod方法// ... 其他代码} }
-
清除歧义: 当子类和父类有相同的方法或属性时,
super
可以用来清除歧义,明确指出我们想要访问的是父类的成员。
方法重写
Java方法重写是指子类中定义了一个与父类中同名的方法,并且具有相同的参数列表和返回类型。这样,当子类对象调用该方法时,会执行子类中的实现,而不是父类中的实现。这种特性称为方法重写(Method Overriding)。
方法重写的条件:
- 方法名相同。
- 参数列表相同。
- 返回类型相同或是子类型。
- 访问修饰符不能更严格。
- 抛出的异常不能比父类方法抛出的异常更多。
示例代码:
class Animal {public void eat() {System.out.println("Animal is eating");}
}class Dog extends Animal {@Overridepublic void eat() {System.out.println("Dog is eating");}
}public class Main {public static void main(String[] args) {Animal animal = new Animal();animal.eat(); // 输出 "Animal is eating"Dog dog = new Dog();dog.eat(); // 输出 "Dog is eating"}
}
this和super的区别
在Java中,this
和super
是两个特殊的关键字,它们在很多方面都有所不同。具体分析如下:
代表的对象不同:
this
关键字代表当前对象,即调用当前对象的实例方法或引用当前对象的实例变量时使用。super
关键字代表父类对象,主要用于访问父类的成员(包括成员变量和方法)以及在子类的构造方法中调用父类的构造方法。
使用场景不同:
this
可以用于普通的实例方法中,也可用于构造方法内部,用来调用同一类的另一个构造方法或者引用当前对象的实例变量。super
只能在子类的方法或构造方法中使用,用于调用父类的构造方法、成员变量或方法。
调用规则不同:
this
可以用于任何实例方法或构造方法中,没有限制。super
必须作为子类构造方法的第一条语句出现,用于调用父类的构造方法。
功能作用不同:
this
可以用于解决实例变量和局部变量之间的命名冲突,也可以用于调用同一个类中的其他构造方法。super
主要用于确保父类部分得到正确的初始化,特别是在继承层次较深时,它可以确保所有父类按顺序被正确构造。
相关文章:

Java static和继承
static特点 Java中的static关键字允许在没有创建类的实例的情况下进行调用。以下是static关键字的主要用途和特点: 静态变量(类变量):使用static关键字声明的变量称为静态变量或类变量。这些变量属于类本身,而不是类…...

亲身体验!人工智能对话无障碍 —— BRClient 使用指南
01 概述 BRClient 这个名字来源于“Bedrock Client”的简称,寓意是为用户提供一个坚实的基础。BRClient 作为一个开源的桌面应用,为用户提供了友好的图形界面,让每个人都能够轻松访问和使用 Claude 3 的强大功能。用户可以自定义 Claude 3 的…...

【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改
MySQL 创建学生成绩数据库 1.创建数据库 create database studentscore;创建完成之后,如果需要使用该数据,使用use命令 use studentscore;创建表前查看当前数据库中包含的表 show tables; 2.创建bclass表 create table bclass( class_id char(8) …...

vue2 export default写法,computed、methods的使用
<template><div><h2>{{nameAll}}</h2><h2>{{method}}</h2><h2>{{tt()}}</h2><h2>{{firstName}}</h2><h2>更新后赋值数据:{{lastName}}</h2><h2>赋值数据:{{writeValue}}</h2>…...

负氧离子监测站:创造健康生活环境
TH-FZ5在蓝天白云之下,那一座座高耸的全彩屏负氧离子监测站,如同一支支科技的绿芽,静静破土而出,为这片土地带来了新的生命力。这些现代化的设备不仅美化了环境,更是我们呼吸健康守护者,它们的存在让我们的…...

【jvm】young gc full gc
何时触发YoungGC或FullGC YoungGC的触发时常在发生,当新生代的Eden区满了之后就会触发YoungGC。 FullGC在多个情况下都会被触发: 1、发生Young GC之前进行检查,如果“老年代可用的连续内存空间” < “新生代历次Young GC后升入老年代的对象…...

2024年腾讯云服务器租用价格_轻量和CVM报价
腾讯云服务器价格表2024年最新价格,轻量2核2G3M服务器61元一年、2核2G4M服务器99元1年,三年560元、2核4G5M服务器165元一年、3年900元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、8核32G配置115元1个月,345元3个月。CVM云服务…...

【go从入门到精通】for循环控制
作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…...

<chrono>, clock_gettime(), gettimeofday()对比
精度(Precision): <chrono>: 提供了纳秒级别的精度,可以满足大多数应用的需求。clock_gettime(): 提供了纳秒级别的精度,与 <chrono> 相当。gettimeofday(): 提供了微秒级别的精度,相对于前两者…...

基于 YAML 接口自动化测试框架设计
在设计自动化测试框架的时候,我们会经常将测试数据保存在外部的文件(如Excel、YAML、CSV),或者数据库中,实现脚本与数据解耦,方便后期维护。目前非常多的自动化测试框架采用通过Excel或者YAML文件直接编写测…...

团体程序设计天梯赛 L2-031 深入虎穴
L2-3深入虎穴 分数 25 名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路&a…...

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵
基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵 目录 前言 一、Givens旋转简介 二、Givens旋转解释 三、Givens旋转进行QR分解 四、Givens旋转进行QR分解数值计算例子 五、求逆矩阵 六、MATLAB仿真 七、参考资料 总结 前言 在进行QR分解时,HouseHolder变换…...

学习使用xbox手柄控制小乌龟节点移动
使用xbox手柄控制小乌龟,首先要下载joy功能包,发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…...

OpenLayers6实战,OpenLayers绘制特殊图形,OpenLayers绘制四角形(菱形),OpenLayers绘制菱形
专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解如何使用OpenLayers6实现绘制特殊图形,以绘制四角形(菱形),OpenLayers绘制菱形的功能为例。 本章核心代码不依赖任何第三方插件,只依赖OpenLayers。 需要注意的是两个操作按钮需要引入ElementUI 二、依赖和使用 &q…...

虚拟机如何在原有磁盘上扩容
虚拟机未开启状态–菜单栏–虚拟机–快照–拍摄快照–拍摄快照– 菜单栏–虚拟机–快照–快照管理器–点击刚刚的快照1–删除–是– 文件–新建或者打开–硬盘(以本人Win 10.64.3GL为例)–虚拟机设置–硬件– 硬盘(SATA)–磁盘实…...

2024-03-27 作业
作业要求: 整理课上代码整理思维导图完成下面类 作业1: 完成了 作业2: 作业3: class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():si…...

C语言二叉树和堆(个人笔记)
二叉树和堆 二叉树1二叉树的概念和结构1.1特殊的二叉树1.2二叉树的性质(规定根节点的层数为1)1.3二叉树的存储结构 2.二叉树的顺序结构和实现2.1二叉树的顺序结构2.2堆的概念和结构2.3堆的实现2.4堆的应用2.4.1堆排序 2.5TOP-K问题 3.二叉树的遍历4.二叉…...

重学SpringBoot3-Profiles介绍
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Profiles介绍 Profiles简介如何在Spring Boot中使用Profiles定义Profiles激活ProfilesIDEA设置active profile使用Profile-specific配置文件 条件化Bean…...

Transformer 论文阅读笔记
文章目录 前言论文阅读研究现状工作内容模型架构训练过程实验结果模型代码 其他评价 前言 Transformer可以说是深度学习领域最重要的,里程碑式的工作之一,发表于2017年的NIPS。该模型开创了自MLP(多层感知机)、CNN(卷…...

Vue 3中ref和reactive的区别
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

oracle19c adg搭建
一、环境搭建 主机IPora19192.168.232.111ora19std192.168.232.112 本文结合:https://blog.csdn.net/weixin_63131036/article/details/136635553 1.配置网络yum源 1.删除redhat7.0系统自带的yum软件包; rpm -qa|grep yum >oldyum.pkg 备份原信息 …...

关闭Elasticsearch built-in security features are not enabled
禁用Kibana安全提示(Elasticsearch built-in security features are not enabled) Kibana提示#! Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.e…...

MC0248 密码判断器(判断强弱密码)
原题链接<---- islower 小写字母判断 isupper 大写字母判断 isdigit 数字判断 题目: 小码哥在是一位密码领域的初学者,有一天他的老师给他了一串密码,要他判断这个密码是否是强密码,老师和他说强密码就是需要同时达到以下要求࿱…...

vue3+threejs新手从零开发卡牌游戏(十六):初始化对方手牌
添加对方手牌区时注意位置调整,以及手牌应该是背面朝上,加个rotateX翻转即可,其他代码和p1.vue代码一致,game/hand/p2.vue代码如下: <template><div></div> </template><script setup lan…...

网页无插件视频播放器,支持录像、截图、音视频播放,多路播放等,提供源码下载
前言 本播放器内部采用jessibuca插件接口,支持录像、截图、音视频播放等功能。播放器播放基于ws流,分屏操作支持1分屏、4分屏、6分屏、9分屏方式。 jessibuca工作原理是通过Emscripten将音视频解码库编译成Js(WebAssembly,简称was…...

Openstack创建和操作实例,实现与外部网络通信
一、熟悉OpenStack图形界面操作 1、了解Horizon项目 Horizon项目 各OpenStack服务的图形界面都是由Horizon提供的。Horizon提供基于Web的模块化用户界面。Horizon为云管理员提供一个整体的视图。Horizon为终端用户提供一个自主服务的门户。Horizon由云管理员进行管理与控制&a…...

dubbo 源码系列之-集群三板斧---负载均衡(二)
在上一课时我们了解了 LoadBalance 接口定义以及 AbstractLoadBalance 抽象类的内容,还详细介绍了 ConsistentHashLoadBalance 以及 RandomLoadBalance 这两个实现类的核心原理和大致实现。本课时我们将继续介绍 LoadBalance 的剩余三个实现。 LeastActiveLoadBala…...

【一周一篇小题解】洛谷P1035级数求和
还是很简单的…… 首先,输入k,再定义一个双精度浮点数s,不停的循环 for(i1;;i) 每次循环加上1.0/i s1.0/i; 如果大于k就停止循环,并输出,也可以输出后直接结束程序 写法一: if(s>k) { printf("%…...

2024-03-26 AIGC-大模型学习路线
摘要: 2024-03-26 AIGC-大模型学习路线 大模型学习路线 建议先从主流的Llama开始,然后选用中文的Qwen/Baichuan/ChatGLM,先快速上手体验prompt工程,然后再学习其架构,跑微调脚本 如果要深入学习,建议再按以下步骤&am…...

QGraphicsView的使用,view坐标,scene坐标,item坐标
Graphics View绘图构架 QGraphicsScene(场景):可以管理多个图形项QGraphicsItem(图形项):也就是图元,支持鼠标事件响应。QGraphicsView(视图):关联场景可以让…...