JAVA之(static关键字、final关键字、抽象类、接口)

news2024/9/26 5:23:08

JAVA之(static关键字、final关键字)

  • 一、 static关键字
    • 1、静态变量
    • 2、静态方法
    • 3、 静态代码块
    • 4、例子
  • 二、final关键字
    • 1、final修饰类
    • 2、 final修饰方法
    • 3、修饰变量
  • 三、抽象类
    • 1、 抽象类
  • 四、接口

一、 static关键字

1、静态变量

private static String str1=“staticProperty”

2、静态方法

public static void print2(){
  逻辑;
}

3、 静态代码块

这种一般用来给某个变量初始化

static{
   static int a=1;
}

4、例子

package com.itheima.springboottest;

public class Astatic {
    static {
        int a=3;
    }
    private static String newa="zhangsan";
    public static void myPrint(){
        System.out.println("hhhhh");
    }
}

class Test1{
    public static void main(String[] args){
        Astatic.myPrint();
    }
}

在这里插入图片描述

二、final关键字

1、final修饰类

final修饰的类,不能被继承

2、 final修饰方法

不被重写,但是子类可以用父类中final修饰的方法

3、修饰变量

(1) 基本类型变量使用final修饰了就不可以变了
(2) 对于引用类型变量【接口、类、数组、string】被final修饰了,引用类型变量引用不可变,但是引用对象的内容可以变

public class Test3{
 public static void main(String[] args){
      A a = new A();
      a.a=1;
      a.b=2;
    }
}

final class A(
   public int a=3;
)
package com.itheima.springboottest;

final class A{

    public int  a = 3;
    public int  b = 3;

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public void myPrint(){
        System.out.println(a);
    }
}



class Test3{
    public static void main(String[] args){
        A a = new A();
        a.a=1;
        a.b=2;
        a.myPrint();

    }
}

三、抽象类

1、 抽象类

public abstract class Action{
    public abstract void doSomething();//抽象方法
    public void test(){
    }
}

父类的抽象方法需要通过子类进行重写,抽象方法不能有大括号

package com.itheima.springboottest;

import java.awt.print.Printable;

public abstract  class AbstractTest {
    public String username;
    int a = 3;
    public static  int  age = 39;
    public  void  myPrint(){
        System.out.println("nihao");
    }
    public  abstract  void  myPrint2();//抽象类型方法不能有大括号{}
}
class Son2 extends AbstractTest{
    @Override
    public  void  myPrint2(){
        System.out.println("子类中重写父类的抽象方法");
    }
}
class TestAbstract {
    public static void main(String[] args){
        Son2 son = new Son2();
        son.myPrint2();
    }
}

在这里插入图片描述

四、接口

1、接口实际上就是class替换为interface
2、接口中的所有定义的方法中其实都是抽象的 public abstract
3、 变量只能是public static final 类型的
4、public abstract void add(); 等效于 void add();
public static final int n = 3;等效于 int n =3

package com.itheima.springboottest;

public interface UserDao {
    int a = 3;// public static final int a =3;
    void  myPrint();//public abstract   void  myPrint();
    int insert(Person a);//public abstract int insert(A a);
}

package com.itheima.springboottest;

public class UserTest implements UserDao{
    public void myPrint(){
        System.out.println("你好,ok");
    }
    public int insert(Person a){
        System.out.println("ni");
        return 1;
    }
}

class TestUserdao{
    public static void main(String[] args){
        Person person = new Person();
        UserTest user = new UserTest();
        user.myPrint();
        int a = user.insert(person);
        System.out.println(a);
    }
}

在这里插入图片描述
接口全部为方法的声明,抽象类里全为方法的实现

还差多态、java中的异常、java中常用类库、集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java异常体系、UncaughtExceptionHandler、Spring MVC统一异常处理、Spring Boot统一异常处理

概述 所有异常都是继承自java.lang.Throwable类,Throwable有两个直接子类,Error和Exception。 Error用来表示程序底层或硬件有关的错误,这种错误和程序本身无关,如常见的NoClassDefFoundError。这种异常和程序本身无关&#xff0…

学习大数据DAY14 PLSQL基础语法3

目录 二重循环 三种循环随便嵌套 exit continue return 作业 数据提取 游标 隐式游标 显示游标 动态游标 游标使用流程 游标属性 游标配合循环使用示例 作业2 参数游标 current of 语句 作业3 PLSQL基础语法(三) 二重循环 三种循环随便嵌…

threadLocal详细认识(使用场景与局限性)与样例测试

Threadlocal的介绍与使用 1,是什么? ThreadLocal 是 Java 提供的一个工具类,用于在多线程环境中为每个线程提供独立的变量副本。它是 Java 标准库中的一部分,提供了线程局部存储的功能,这意味着每个线程都有自己独立…

【安全设备】APT攻击预警平台

一、什么是APT 高级持续性威胁(APT)是一种高度复杂和长期的网络攻击,旨在通过持续监视和访问特定目标来窃取敏感信息或进行其他恶意活动。这种攻击结合了多种先进的技术手段和社会工程学方法,以极高的隐蔽性实现长期潜伏和信息窃…

2 文件

2 文件 1、文件系统1.1 文件系统的逻辑结构1.2 文件的访问流程 2、文件类型3、文件的打开与关闭4、文件的内核结构5、文件的读写4.1 顺序与随机读写4.2 文件描述符的复制4.3 访问测试4.4 修改文件大小 5、文件锁5.1 读写冲突5.2 文件锁5.3 文件锁的内核结构 6、文件的元数据7、…

MTK Camera 冷启动、前后摄切换性能优化分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、背景二、问题分解三、工具分析四、 traceView教程五、surface create优化六、systrace的教程七、优化方案八、前后切换速度优化九、优化方案十、热…

旷野之间4 - 100 个 Kubernetes 面试问题及答案

100 个 Kubernetes 面试问题及答案 Kubernetes 简介 什么是 Kubernetes? Kubernetes 是一个开源容器编排平台,可自动部署、扩展和管理容器化应用程序。 什么是容器? 容器是一个轻量级、独立的、可执行软件包,其中包含运行应用…

学习笔记——动态路由——IS-IS中间系统到中间系统(特性之路由撤销)

6、路由撤销 ISIS路由协议的路由信息是封装在LSP报文中的TLV中的,但是它对撤销路由的处理和OSPF的处理方式类似。 在ISIS中撤销一条路由实则是将接口下的ISIS关闭: 撤销内部路由: 在ISIS中路由信息是由IP接口TLV和IP内部可达性TLV共同来描…

游戏AI的创造思路-技术基础-决策树(2)

上一篇写了决策树的基础概念和一些简单例子,本篇将着重在实际案例上进行说明 目录 8. 决策树应用的实际例子 8.1. 方法和过程 8.1.1. 定义行为 8.1.2. 确定属性 8.1.3. 构建决策树 8.1.4. 实施行为 8.1.5. 实时更新 8.2. Python代码 8. 决策树应用的实际例子…

hudi数据湖万字全方位教程+应用示例

1、时间轴(TimeLine) Hudi的核心是维护表上在不同的即时时间(instants)执行的所有操作的时间轴(timeline),这有助于提供表的即时视图 一个instant由以下三个部分组成: 1)…

YOLOv10改进 | Conv篇 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)

一、本文介绍 本文给大家带来的改进机制是RCS-YOLO提出的RCS-OSA模块,其全称是"Reduced Channel Spatial Object Attention",意即"减少通道的空间对象注意力"。这个模块的主要功能是通过减少特征图的通道数量,同时关注空…

Android使用AndServer在安卓设备上搭建服务端(Java)(Kotlin)两种写法

一直都是通过OkHttp远程服务端进行数据交互,突发奇想能不能也通过OkHttp在局域网的情况下对两个安卓设备或者手机进行数据交互呢? 这样一方安卓设备要当做服务端与另一个安卓设备通过OkHttp进行数据交互即可 当然还可以通过 socket 和 ServerSocket 通…

IC后端设计中的shrink系数设置方法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 在一些成熟的工艺节点通过shrink的方式(光照过程中缩小特征尺寸比例)得到了半节点,比如40nm从45nm shrink得到,28nm从32nm shrink得到,由于半节点的性能更优异,成本又低,漏电等不利因素也可以…

旷野之间5 - AI基础代理决策的范式转变

介绍 让我们来谈谈最近在人工智能领域引起轰动的一件事——基础代理及其彻底改变我们所知的决策的潜力。现在,我知道你可能会想,“另一天,又一个人工智能突破,乏味无趣。”但相信我,这是一个改变游戏规则的突破,值得你关注。 如果您一直在关注人工智能和人工智能代理的…

JupyterNotebook中导出当前环境,并存储为requirements.txt

​使用Anaconda管理Python环境时,可以轻松地导出环境配置,以便在其他机器或环境中重新创建相同的环境。可以通过生成一个environment.yml文件实现的,该文件包含了环境中安装的所有包及其版本。但是,常常在一些课程中JupyterNotebo…

synchronized关键字详解(全面分析)

目录 synchronized关键字详解1、synchronized关键字简介2、synchronized作用和使用场景作用使用场景①、用在代码块上(类级别同步)②、用在代码块上(对象级别同步)③、用在普通方法上(对象级别同步)④、用在静态方法上(类级别同步)总结: 3、synchronized底层原理&am…

记录些Redis题集(1)

为什么Redis要有淘汰机制? 淘汰机制的存在是必要的,因为Redis是一种基于内存的数据库,所有数据都存储在内存中。然而,内存资源是有限的。在Redis的配置文件redis.conf中,有一个关键的配置项: # maxmemory…

vue3<script setup>自定义指令

main.ts // 自定义指令 app.directive(color,(el,binding) > {el.style.color binding.value })这段代码定义了一个名为color的自定义指令,并将其注册到Vue应用实例app上。自定义指令接收两个参数:el和binding。el是绑定指令的元素,而bi…

240711_昇思学习打卡-Day23-LSTM+CRF序列标注(2)

240711_昇思学习打卡-Day23-LSTMCRF序列标注(2) 今天记录LSTMCRF序列标注的第二部分。仅作简单记录 Score计算 首先计算正确标签序列所对应的得分,这里需要注意,除了转移概率矩阵𝐏外,还需要维护两个大小…

解决鸿蒙开发中克隆项目无法签名问题

文章目录 问题描述问题分析解决方案 问题描述 在一个风和日丽的早晨,这是我学习鸿蒙开发的第四天,把文档过了一遍的我准备看看别人的项目学习一下,于是就用git去clone了一个大佬的开源项目,在签名的时候遇到了问题: h…