Java面向对象(1)

news2024/12/28 3:15:38

static静态变量

在这里插入图片描述

public class Student {
    static String name;
    private double score;
    public Student(){};

    public Student(double score) {
        this.score = score;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}
public class test {
    public static void main(String[] args) {
        Student.name="刘";

        Student s1=new Student();
        s1.name="马";

        Student s2=new Student();
        s2.name="秋";

        System.out.println(Student.name);

    }
}

//秋

static只有一个变量,所以修改别的类中的变量,所以的name都会变化。

应用场景

比如系统的中统计用户的个数,在每次用户类中的构造函数中++。

public class User {
    public static int num;//初始为0
    public User(){
        User.num+=1;
    }
}
public class test {
    public static void main(String[] args) {
        User u1=new User();
        User u2=new User();
        User u3=new User();
        User u4=new User();
        User u5=new User();
        User u6=new User();
        System.out.println(u1.num);

    }
}
//输出 6

在这里插入图片描述
在这里插入图片描述

public class LoginDemo {
    public static void main(String[] args) {
        String code="";
        String data="qwertyuiopasdfghjklzxcvbnm";
        Random r=new Random();
        for(int i=0;i<4;++i){
            int t=r.nextInt(data.length());
            code+=data.charAt(t);
        }
        System.out.println(code);
    }
}
public class RegisterDemo {
    public static void main(String[] args) {
        String code="";
        String data="qwertyuiopasdfghjklzxcvbnm";
        Random r=new Random();
        for(int i=0;i<4;++i){
            int t=r.nextInt(data.length());
            code+=data.charAt(t);
        }
        System.out.println(code);
    }
}

上述两个代码可以改成如下:

public class MyUtil {
    public static String createCode(int n) {
        String code="";
        String data="qwertyuiopasdfghjklzxcvbnm";
        Random r=new Random();
        for(int i=0;i<n;++i){
            int t=r.nextInt(data.length());
            code+=data.charAt(t);
        }
        return code;
    }
}
public class LoginDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(4));
    }
}

public class RegisterDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(5));
    }
}

这样就会简洁很多。
在MyUtil中加入private MyUtil(){};后,这样可以防止别的代码中创建MyUtil类。

在这里插入图片描述

静态代码块

public class Student {
    static int num;
    static {
        System.out.println("静态代码块执行了");
    }
}

public class Test {
    public static void main(String[] args) {
        System.out.println(Student.num);
        System.out.println(Student.num);
    }
}
//输出
//静态代码块执行了
//0
//0

静态代码块只有在创建的第一次会执行。一般用来对类变量进行初始化赋值。

实例代码块

在这里插入图片描述

public class Student {

    public Student(){
        System.out.println("无参构造函数执行了");
    }
    public Student(String name){
        System.out.println("有参构造函数执行了");
    }
    {
        System.out.println("实例代码块执行了");
    }
}
public class Test {
    public static void main(String[] args) {
        Student stu=new Student();
    }
}
//输出
实例代码块执行了
无参构造函数执行了

单例模式

在这里插入图片描述
饿汉式单例
在还没有创建对象的时候就自己创建了

public class A {
    private static A a=new A();
    private A(){

    }
    public static A getObject(){
        return a;
    }
}
public class Test {
    public static void main(String[] args) {
        A a1=A.getObject();
        A a2=A.getObject();
        System.out.println(a1);
        System.out.println(a2);

    }
}
//输出
com.peng.test.single.A@4eec7777
com.peng.test.single.A@4eec7777

在这里插入图片描述
懒汉式单例
只有创建对象的时候才会创建,并且只能有一个对象

//懒汉式单例
public class B {
    private static B b;

    private B(){}

    public static B getInstance(){
        if(b==null){
            b = new B();
        }
        return b;
    }
}

public class Test {
    public static void main(String[] args) {
        B b1=B.getInstance();
        B b2=B.getInstance();
        System.out.println(b1);
        System.out.println(b2);
    }
}
//输出
com.peng.test.single.B@4eec7777
com.peng.test.single.B@4eec7777

继承

在这里插入图片描述
继承不能继承多个,但是可以多层。
任何类都默认继承Object类,
在这里插入图片描述

public class A {
    public int i;
    public void printi(){
        System.out.println("公共的可以继承");
    }
    private int j;
    private void printj(){
        System.out.println("私有的不可以继承");
    }


}
public class B extends A {
    public void printb(){
        i=0;
        System.out.println(i);
        printi();
    }
}

继承的应用

public class people {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class teacher {
    private int salary;

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
}
public class student {
    private String subject;

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }
}
public class Test {
    public static void main(String[] args) {
        teacher t=new teacher();
        t.setName("刘");
        t.setSalary(100);
        System.out.println(t.getName());
        System.out.println(t.getSalary());
    }

}
//输出100

修饰符

在这里插入图片描述

方法重写

在这里插入图片描述
在这里插入图片描述
重写的前面要加上@Override,便于理解。
继承变量中会就近原则。如果非要访问父类的变量,就用super来访问。

public class people {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public void print_people(){
        System.out.println("1111");
    }
}
public class teacher extends people{
    private int salary;

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
    @Override
    public void print_people(){
        System.out.println("66666");
    }
}
public class Test {
    public static void main(String[] args) {
        teacher t=new teacher();
        t.print_people();
    }
}

在这里插入图片描述

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

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

相关文章

Flink状态

8.1 Flink中的状态 8.1.1 概述 状态的分类 1&#xff09;托管状态&#xff08;Managed State&#xff09;和原始状态&#xff08;Raw State&#xff09; Flink的状态有两种&#xff1a;托管状态&#xff08;Managed State&#xff09;和原始状态&#xff08;Raw State&#…

【自学记录】深度学习入门——基于Python的理论与实现(第3章 神经网络)

3.4.3 3层神经网络Python实现 实现的是这个网络 **init_network()**函数会进行权重和偏置的初始化&#xff0c;并将它们保存在字典变量network中。这个字典变量network中保存了每一层所需的参数(权重和偏置)。 **forward()**函数中则封装了将输入信号转换为输出信号的处理过程…

CSS 选择器的几种方法

CSS 选择器的几种方法 业余选手爱记笔记示例代码用否定伪类伪元素用代数式法同胞选择符 ~相邻同胞选择符 业余选手爱记笔记 CSS权威指南&#xff08;第四版&#xff09;是一本好书&#xff0c;看了一遍第二章的选择符有些受益&#xff0c;记录一点读后感和练习。我已将该书电…

ShipMaker船舶协同设计软件介绍

作者简介&#xff1a; 有将近20年的软件开发经验&#xff0c;包括15年CAD&#xff08;7年船舶和8年建筑CAD软件&#xff09;软件开发和5年高性能服务器开发。精通CAD建模平台底层架构和服务器开发技术&#xff0c;包括对象存储管理及拷贝、图形对象渲染、文件保存及升级、事务…

C语言自定义类型详解(2)位断、枚举、联合知识汇总

本篇概要 本篇主要讲述C语言位断、枚举。联合的相关知识&#xff0c;包括哥哥自定义类型的基本声明&#xff0c;使用、优点。计算等相关知识。 文章目录 本篇概要1.位断1.1什么是位断&#xff1f;1.2 位段的内存分配1.3 位段的跨平台问题1.3 位段的应用 2.枚举2.1 枚举类型的声…

堆的基本操作和PriorityQueue接口

目录 堆的插入 堆的删除 PriorityQueue接口 PriorityQueue的注意事项: PriorityQueue常用接口介绍 1. 优先级队列的介绍 2. 扩容 3. 插入/删除/获取优先级最高的元素 Java对象的比较 1.基本类型的比较 2.对象比较的问题 3.对象比较的方法 Top- k问题 堆的插入 堆的插入…

asp.net core openxml读取word内容

安装包 OpenXMLSDK-MOT System.IO.Packaging 编写代码测试 using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using System; using System.Linq; using System.Text;namespace WordReader {internal class Program{static void Main(…

【Python从入门到进阶】37、selenium关于phantomjs的基本使用

接上篇《36、Selenium 动作交互》 上一篇我们介绍了selenium操作网页的动作内容。本篇我们来学习有关phantomjs的相关知识。 一、selenium的缺点 在介绍PhantomJS之前&#xff0c;让我们先讨论一下直接使用Selenium的一些缺点。 1、显示浏览器窗口&#xff1a;Selenium通常需…

管理类联考——数学——汇总篇——知识点突破——几何——平面几何——记忆

文章目录 整体记忆宫殿角度/分类/串联线——从小到大角度/分类/串联线2——求长度&#xff0c;面积&#xff0c;角度 局部数字编码口诀法五大模型/共角定理、风筝模型、蝴蝶模型 转化图像法特点法公式推导法&#xff1a;公式推导掌握数学公式射影定理共角定理燕尾定理蝴蝶定理/…

Mysql高级——数据库设计规范(1)

数据库设计规范 1. 为什么需要数据库设计 数据库设计是为了有效地组织和管理数据。它是一个重要的步骤&#xff0c;用于创建一个结构良好、高效和可靠的数据库系统。以下是一些需要数据库设计的原因&#xff1a; 数据组织&#xff1a;数据库设计帮助我们将数据按照一定的结构…

Android 引入FFmpeg

1.安装 CMake 首先&#xff0c;需要下载 CMake 相关工具&#xff0c;在 Android Studio 中依次点击 Tools->SDK Manager->SDK Tools &#xff0c;然后勾选 CMake : CMake 构建工具 NDK : NDK 环境 最后依次点击 OK->OK->Finish &#xff0c;开始下载&#xff0…

科技资讯|苹果获批手机“Touch Bar”新专利,苹果Find My依旧火爆

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果获得了一项 iPhone 专利&#xff0c;在机身侧面装上一个“Touch Bar”&#xff0c;用于显示电量等信息&#xff0c;并支持相关的交互操作。 这项专利最早于 2011 年提交&#xff0c;并于 2014 年…

OJ练习第180题——颠倒二进制位

颠倒二进制位 力扣链接&#xff1a;190. 颠倒二进制位 题目描述 颠倒给定的 32 位无符号整数的二进制位。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中&#xff0c;没有无符号整数类型。在这种情况下&#xff0c;输入和输出都将被指…

FPGA 图像缩放 千兆网 UDP 网络视频传输,基于B50610 PHY实现,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包UDP…

Spring | 异常处理最佳实践

引言 在快速迭代和持续交付的今天&#xff0c;软件的健壮性、可靠性和用户体验已经成为区别成功与否的关键因素。特别是在Spring框架中&#xff0c;由于其广泛的应用和丰富的功能&#xff0c;如何优雅地处理异常就显得尤为重要。本文旨在探讨在Spring中如何更加高效、准确和优…

【设计模式】组合模式

文章目录 1.组合模式定义2.组合模式的结构2.1. 安全式组合模式的结构2.2.透明式组合模式的结构 3.组合模式实战案例3.1.场景说明3.2.关系类图3.3.代码实现 4.组合模式优缺点5.组合模式适用场景6.组合模式总结 主页传送门&#xff1a;&#x1f481; 传送 1.组合模式定义 组合模式…

Spring面试题8:面试官:说一说Spring的BeanFactory

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的BeanFactory Spring的BeanFactory是Spring框架的核心容器,负责管理和创建Bean对象。它是一个工厂类,用于实例化、配置和管理Bean的…

忽视日志吃大亏,手把手教你玩转 SpringBoot 日志

一、日志重要吗 程序中的日志重要吗&#xff1f; 在回答这个问题前&#xff0c;笔者先说个事例&#xff1a; ❝ 笔者印象尤深的就是去年某个同事&#xff0c;收到了客户反馈的紧急bug。尽管申请到了日志文件&#xff0c;但因为很多关键步骤没有打印日志&#xff0c;导致排查进…

基于springboot+vue的车辆管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

专业排版软件InDesign 2023下载 InDesign mac中文功能

InDesign 2023 mac是一款专业排版软件&#xff0c;适用于Windows和macOS平台。它可以帮助用户创建、设计和排版各种印刷品和数字出版物&#xff0c;如杂志、书籍、报纸、广告、海报、手册、电子书等。 InDesign 2023 mac软件特点 多种页面布局&#xff1a;支持多种页面布局&…