软件设计之Java入门视频(12)

news2024/9/23 1:40:51

软件设计之Java入门视频(12)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分
本次内容涉及330-359
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上
记录内容:

  1. 代码块
  2. final 关键字
  3. 抽象类与方法
  4. 接口

1、代码块

1)作用:用来初始化类、对象
2)代码块如果有修饰的话,只能用static
3)分类:静态代码块非静态代码块
静态代码块
  a)内部可以有输出语句
  b)随着类的加载而执行,而且只执行一次
  c)静态代码块的执行要先于非静态代码块
非静态代码块
  a)内部可以有输出语句
  b)随着对象的创建而执行,每创建一个对象,就执行一次非静态代码块
  c)作用:可以在创建对象时,对对象属性等进行初始化

由父及子,静态先行

main方法作为程序入口(static),仍遵循由父及子规定,所以先1,4,再7
然后再执行父类Person中的代码块–>构造器;
随后转到子类Animal中执行代码块–>构造器;

package test;

public class BlockTest {

}


class Person{
    static {
        System.out.println("1");
    }
    {
        System.out.println("2");
    }
    public Person(){
        super();
        System.out.println("3");
    }
}

class Animal extends Person{

    static {
        System.out.println("4");
    }
    {
        System.out.println("5");
    }
    public Animal(){
        super();
        System.out.println("6");
    }

    public static void main(String[] args) {
        System.out.println("7");
        new Animal();
    }
}
}//输出顺序1 4 7 2 3 5 6

对象赋值顺序

1)默认初始化
2)显式初始化/在代码块中赋值 [看代码先后顺序]
3)构造器中初始化
4)通过对象.属性或对象.方法赋值
5)接口

final关键字

1)final可以用来修饰的结构:类、方法、变量
2)final用来修饰类:此类不能被其他类所继承
3)final用来修饰方法:此方法不能被重写
4)final用来修饰变量:“此时的变量”就称为一个常量
  a)final修饰属性:可以考虑赋值的位置:显式初始化、代码块中初始化、构造器中初始化
  b)final修饰局部变量:修饰形参时,需要给常量形参赋一个实参,并只能在方法内使用这个不能进行赋值的形参
5)static final用来修饰属性:全局常量

package test;

public class OrderTest {
    final int WIDTH = 0;
    final int LEFT;
    final int RIGHT;
    {
        LEFT = 1;
    }
    public OrderTest(){
        RIGHT = 1;
    }
    public OrderTest(int m){
        RIGHT = m;
    }
}

抽象类与方法

抽象类
1)抽象类不能实例化
2)抽象类中一定有构造器,便于子类实例化时调用(设计:子类对象实例化全过程)
3)开发中,都会提供抽象类的子类,让子类对象实例化
抽象方法
1)抽象方法只有方法的声明,没有方法体
2)包含抽象方法的类一定是抽象类;抽象类可以不包括抽象方法
3)若子类重写了父类中的所有的抽象方法后,此子类方可实例化
4)若子类没有重写父类中所有的抽象方法,则此子类也是一个抽象类,需要使用abstract
注意点
1)abstract不能用来修饰:属性、构造器等结构
2)abstract不能用来修饰私有方法、静态方法、final的方法、final的类
静态方法与static不同用的解释:抽象类不能直接实例化,而静态方法不依赖于实例,可以直接通过类名调用。把一个方法同时定义为abstract和static在语义上是矛盾的,因为抽象方法需要实例化的子类来实现,而静态方法在没有实例时就可以调用

抽象类的匿名子类对象

//Person是抽象类
Person p = new Person;//这是无法执行的,因为抽象类无法造对象
//如果worker是Person子类
Worker worker = new Workder();  //有类的名字;有对象名字
Person p = new Person(){   //此时匿名子类的对象p 没有子类名字;有对象名字
	@Override //重写抽象方法
	public void eat(){
	}
}

4、接口

1)接口使用interface定义
2)Java中,类和接口是并列的两个结构
3)定义接口中的成员:
  a)JDK7及以前:只能定义全局常量(public static final书写时可省略不写)和抽象方法(public abstract)
  b)JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法与默认方法(略)
4)接口中不能定义构造器,意味着不能实例化
5) Java开发中,接口通过让类去实现(implements)方式使用
  a)如果实现类覆盖了接口中所有的抽象方法,则此实现类可以实例化
  b)如果实现类没有覆盖接口中所有的抽象方法,则该类仍为一个抽象类
6)Java类可以实现多个接口
  a)格式: class AA extends BB implements CC,DD,EE
7)接口与接口之间可以继承,可多继承
在这里插入图片描述

package test;

public class InterfaceTest {
    public static void main(String[] args) {
        Fly fly = new Fly();
        fly.fly();
    }
}


interface Flyable{

    //全局常量
    public static final int MAX_SPEED = 10;
    int MIN_SPEED = 0;
    //抽象方法
    public abstract void fly();
}

class Fly implements Flyable{
    @Override
    public void fly() {
        System.out.println("通过引擎起飞");
    }
}

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

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

相关文章

【OnlyOffice】桌面应用编辑器,插件开发大赛,等你来挑战

OnlyOffice,桌面应用编辑器,最近版本已从8.0升级到了8.1 从PDF、Word、Excel、PPT等全面进行了升级。随着AI应用持续的火热,OnlyOffice也在不断推出AI相关插件。 因此,在此给大家推荐一下OnlyOffice本次的插件开发大赛。 详细信息…

[激光原理与应用-98]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 2 - 什么是激光器焊接? 常见的激光焊接技术详解

目录 一、什么是激光焊接 1.1 概述 1.2 激光焊接的优点 二、激光焊接的应用 2.1 哪些场合必须使用激光焊接 1. 汽车制造业 2. 航空航天领域 3. 电子行业:消费类电子3C 4. 医疗器械制造 5. 新能源锂电池行业 6. 其他领域 三、激光焊接的分类 3.1 按焊接…

指针回顾.

指针的主要作用:提供一种间接访问数据的方法 1.地址:区分不同内存空间的编号 2.指针:指针就是地址,地址就是指针 3.指针变量:存放指针的变量称为指针变量,简称为指针 1.指针的定义 int *p NULL; int *q NULL; char *p NULL; double *p NUL…

多功能工具网站

江下科技在线应用-免费PDF转换成Word-word转pdf-无需下载安装 (onlinedo.cn)https://www.onlinedo.cn/

AI对于高考和IT行业的深远影响

目录 AI对IT行业的冲击及深远影响1. 工作自动化2. 新的就业机会3. 行业融合4. 技术升级和创新5. 数据的重要性 IT行业的冬天要持续多久?大学的软件开发类专业是否还值得报考?其他问题IT行业是否都是加班严重?35岁后就业困难是否普遍现象&…

大数据中的常见数据问题:独断脏

想象你刚刚入职一家声称正在进行"数字化转型"的大型企业,担任大数据开发工程师。在入职的第一周,你满怀热情,迫不及待地想要大展拳脚,用你的技能来推动公司的数据驱动决策。 目录 大数据中的常见数据问题1. 独 - 数据孤岛2. 断 - 数据价值链断层3. 缺 - 标准、治理…

C++初学者指南-4.诊断---地址检测器

C初学者指南-4.诊断—地址检测器 幻灯片 地址检测器(ASan) 适用编译器g,clang检测内存错误 内存泄露访问已经释放的内存访问不正确的堆栈区域 用额外的指令检测代码 运行时间增加约70%内存使用量大约增加了3倍 示例:检测空指针 使用地址…

【全图文教程】如何安装MySQL

一、官网下载MySQL 打开MySQL官方下载页:https://dev.mysql.com/downloads/installer/ 二、安装MySQL 点击下载下来的安装包,进入安装界面。 选择Custom(自定义安装), 因为有些应用我们可能用不到。 选择要安装的服务, 并…

跨越语言的界限:Vue I18n 国际化指南

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 国际化简介 vue-i18n 安装和配置 创建语言包 基本使用 切换语言 动态翻…

在 PostgreSQL 中,如何处理大规模的文本数据以提高查询性能?

文章目录 一、引言二、理解 PostgreSQL 中的文本数据类型三、数据建模策略四、索引选择与优化五、查询优化技巧六、示例场景与性能对比七、分区表八、数据压缩九、定期维护十、总结 在 PostgreSQL 中处理大规模文本数据以提高查询性能 一、引言 在当今的数据驱动的世界中&…

在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式

Ubuntu安装MySQL 介绍: Ubuntu 是一款基于Linux操作系统的免费开源发行版,广受欢迎。它以稳定性、安全性和用户友好性而闻名,适用于桌面和服务器环境。Ubuntu提供了大量的软件包和应用程序,拥有庞大的社区支持和活跃的开发者社区…

Chair Footrest Protective Cover

Chair Footrest Protective Cover 万能通用型椅子脚垫保护套凳子耐磨硅胶加厚垫桌椅脚垫防滑静音套

如何使用HippoRAG增强LLM的记忆

大型语言模型(LLM)已经证明是一种非常宝贵的思考工具。经过大量文本、代码和其他媒体数据集的训练,它们能够创作出接近人类水平的文章、翻译语言、生成图像,还能以信息丰富的方式回答人们提出的问题,甚至可以编写不同类…

JSP WEB开发(一) JSP语言基础

目录 JSP JSP简介: JSP页面 JSP运行原理 JSP脚本元素 JAVA程序片 局部变量 全局变量和方法的声明 全局变量 方法的声明 程序片执行特点 synchronized关键字 表达式 JSP指令标记 page指令 include指令 JSP动作标记 JSP动作元素include和include指令的…

pandas中 groupby分组详解 1

引言 在一个使用 pandas 做数据分析的项目过程中,再次深刻理解了一下 pandas 中使用 groupby 进行分组的一些细节问题,以及对想要做的操作如何实现,在此记录; 问题 1:groupby 分组查看分组结果,以及重设分…

生物化学笔记:电阻抗基础+电化学阻抗谱EIS+电化学系统频率响应分析

视频教程地址 引言 方法介绍 稳定:撤去扰动会到原始状态,反之不稳定,还有近似稳定的 阻抗谱图形(Nyquist和Bode图) 阻抗谱图形是用于分析电化学系统和材料的工具,主要有两种类型:Nyquist图和B…

Ratf协议图解、Nacos CP集群源码分析

文章目录 Nacos CP集群说明Raft协议leader选举重新选举leader多个Candidate情况更新操作,日志复制网络分区 源码实现服务注册leader选举leader心跳包 Nacos CP集群 说明 CAP原则 C 一致性 ConsistencyA 可用性 Availability分区容错性 Partition tolerance 分区…

在 PostgreSQL 中,如何处理数据的版本控制?

文章目录 一、使用时间戳字段进行版本控制二、使用版本号字段进行版本控制三、使用历史表进行版本控制四、使用 RETURNING 子句获取更新前后的版本五、使用数据库触发器进行版本控制 在 PostgreSQL 中,处理数据的版本控制可以通过多种方式实现,每种方式都…

文档去重(TF-IDF,MinHash, SimHash)

2个doc有些相似有些不相似,如何衡量这个相似度; 直接用Jaccard距离,计算量太大 TF-IDF: TF*IDF TF:该词在该文档中的出现次数, IDF:该词在所有文档中的多少个文档出现是DF,lg(N/(1DF)) MinHash …

利用级数公式计算圆周率(π)

π是是指圆的周长与直径的比值,是无限不循环小数,有很多种方法可以求得它的近似值。这里用比较容易实现的关于π的无穷级数来求它的前10000位的取值。 π / 2 π 具体的,用两个字符数组x,z分别存放当前计算得到的pi值,数组…