实训笔记6.6

这篇具有很好参考价值的文章主要介绍了实训笔记6.6。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

6.6

一、座右铭

我的故事你说,我的文字我落,我值几两你定,我去何方我挑。

二、知识回顾

1、方法和构造方法

1.1 Java方法
  1. 方法的声明和调用方式
  2. 方法的分类
  3. 方法的返回值问题
  4. 方法名
  5. 方法的形参列表问题
  6. 方法的重载问题
  7. 方法的JVM内存问题(方法的声明时机、方法的调用内存)
  8. 方法和方法之间可以相互调用的
1.2 Java构造方法(构造器)
  1. 构造器的声明和调用方法
  2. 默认构造器的问题
  3. 构造参数的问题
  4. 构造器的JVM内存问题(声明时机、调用时机)

三、类中的代码块

3.1 代码块的概念和声明语法

代码块是类中唯一的一段可以自动执行的代码区域,代码块中内容我们无法手动调用执行,只能让其自动执行。

  • 声明

[static] {

代码块体;

}

【注意】

  1. 在一个类当中可以存在多个代码块,多个代码块再执行的时候会从上而下依次执行。

    package codeblock;
    
    public class Demo01 {
    	{
    		System.out.println("第一个非静态代码块");
    	}
    	
    	static {
    		System.out.println("第一个静态代码块");
    	}
    	
    	{
    		System.out.println("第二个非静态代码块");
    	}
    	
    	static {
    		System.out.println("第二个静态代码块");
    	}
    	
    	public Demo01() {
    		System.out.println("构造器执行了");
    	}
    	public static void main(String[] args) {
    		Demo01 d = new Demo01();
    		Demo01 d1 = new Demo01();
    	}
    }
    
    

3.2 代码块的分类

  • 非静态代码块:

    调用任何一种构造方法构建对象之前先会执行一次非static的代码块,非静态代码块调用一次构造函数执行一次

    执行时机:构造函数执行之后、构造体执行之前

  • 静态代码块:
    在类加载的时候就会执行静态代码块。静态代码块只有在类加载的时候会执行一次,以后就再也不执行了。

3.3 代码块调用本类属性和方法的问题

非静态代码块可以调用所有的属性和方法

静态代码块只能调用static的属性和方法

四、final修饰的常量属性问题

4.1 问题出现的缘由

Java中属性又名成员变量,而变量必须初始化之后才能使用,局部变量必须得手动初始化才能使用,属性可以不用手动初始化,因为JVM内存在类加载或者创建对象的时候会给没有初始值的属性赋予一个默认值,通过默认值完成初始化过程。

虽然属性没有被赋值的时候内存会自动初始化,赋予默认值,但是final修饰的属性不在此JVM自动初始化行列之内。因为final修饰的属性不可变更值,如果final修饰的属性是一个引用数据类型,按道理会赋予null值,但是null值因为final原因不可更改,导致NullPoniterException的产生。

4.2 常量属性的手动赋值的位置

常量数据又分为静态常量属性和非静态常量属性

  • 静态常量属性可以在两个位置进行初始化操作:

    1. (1)声明的时候直接赋值
    2. (2)静态代码块当中
  • 非静态常量属性可以三个位置进行初始化操作:

  1. (1)声明的时候直接赋值
  2. (2)非静态代码块赋值
  3. (3)构造器中进行赋值

4.3 代码块的使用场景

如果类中存在常量属性、常量属性需要赋值操作才能使用,赋值操作一般都建议在代码块中赋值使用。

五、类的第五大组成成分-内部类

5.1 内部类的定义和语法

内部类是声明在类中的一个类,内部类是用来扩充外部类的功能的。

5.1.1 内部类的声明语法

访问控制修饰符 [static|final] class 类名 {

类体:类的五大组成成分

}

5.2 内部类的分类-内部类的加载时机是和对象以及外部类的加载时机有关系的

静态内部类:外部类加载的时候会加载。

非静态内部类:外部类创建对象的时候才会加载,非静态内部类中不能存在静态内容。

5.3 内部类如何使用

静态内部类的创建对象方式:

new 外部类.内部类(实参);

//静态内部类创建对象
InnerClass02 i1 = new  OuterClass.InnerClass02();

非静态内部累的创建对象方式

new 外部类().new 内部类(实参);

//非静态内部类创建对象
InnerClass01 i = new OuterClass().new InnerClass01();

5.4 内部类的高级使用方式:Java继承概念有关系的

内部类也可以声明在方法内部

六、面向对象中常用两个关键字:package和import

6.1 package关键字

package是Java中的包,包就等同于一种文件夹,是用于分类存放不同类型的代码的。在Java中一旦把一个类声明到某一个包下,那么会在这个类的首行使用package包名.包名……的形式声明类是这个包下的类。

在Java当中,包名是可以多个层级的,包下可以有类,也可以有另外一个包。

JRE,Java运行时环境,包含了JVM以及Java的基本类库-Java提供的一些常用类,常用类库都在rt.jar压缩包当中,

  • java.lang—Java常用工具类
  • java.util----Java集合常用类
  • java.io----Java I0流常用类
  • java.sql----JDBC常用类
  • java.lang.reflect—java反射代码

【注意】

  1. 同一个包下不允许出现重名的类,但是不同的包下允许出现重名类
  2. 我们在创建Java代码的时候,创建包的时候,包是有一个起名的规则,必须先在项目定义两个层级包,层级包是用于告诉别人这个代码是谁或者哪个组织写的,包一般是我们公司或者组织、个人域名的倒写。

6.2 import关键字

在Java当中,编写代码的时候,经常会遇到使用自己编写的其他类,或者JRE提供的基本类库、或者是第三方给我们提供的代码,但是这些代码可能不在同一个包下,如果我们要使用不同包下的代码,必须在当前类的package声明之下,class声明之前使用import全限定类名的方式将这个类导入到我们的当前类中,我们才能去使用

全限定类名就是包名.包名.xxxx.类名

Java中声明的每一个类,默认会给我们导入两个包,这两个包不需要我们手动导入,全自动化完成,本类所在的包、java.lang包

import xxx.*: 将xxx包下的所有Java类给导入进来,xxx包下的子包中的内容不会引入进来。

七、Java面向对象的三大特征之一:继承性

7.1 概念

继承是Java用于解糊合的一种手段,如果多个类当中出现了重复性的行为方法,那我们就可以把这些方法抽取到一个父类当中,然后由子类去继承父类,子类一旦继承父类之后,子类就会拥有父类中声明的这些方法(不一定是所有的)。

7.2 继承的语法

class Son extends Father{

}

【注意点】:Java是单继承的,一个字类只能继承一个父类,但是Java支持多层继承,子类继承父类、父类继承另外一个父类,那么子类会同步继承另外一个父类的能力.

7.3 继承中的属性问题

属性可以被子类继承的,子类能不能有一个和父类同名的属性?

子类可以拥有和父类重名的属性,默认情况下使用子类的属性,如果子类要使用父类的属性,必须使用super.属性名的方式调用父类的属性名,但是有一个前提,super关键字不能使用在static方法中。

最好不要存在和父类同名的属性。

	public void print(String name) {
		System.out.println(name);//输出的距离最近的局部变量
		System.out.println(this.name);//输出的是本类的属性
		System.out.println(super.name);//输出的是父类的属性
	}

7.4 继承中方法问题

子类可以继承父类的方法,子类也可以有自己的方法。

子类如果继承父类的方法时,觉得父类的方法不满足我的需求,可以在满足某种规则的前提下将父类的方法给重写了。

子类也具备这个能力,只不过就是父类方法中定义的方法体不满足子类的要求,所以子类需要把父类定义的方法的方法体给修改了。这样的方法成为方法重写;

一旦方法重写了,方法上最好加上一个@Override注解。

重写方法必须满足以下几个规则:

  1. 必须位于子类和父类中,而且是子类重写父类的方法

  2. 子类的方法名以及方法的参数列表、方法的返回值类型必须和父类保持一致文章来源地址https://www.toymoban.com/news/detail-474081.html

    	@Override
    	public void shouted() {
    		System.out.println("狗汪汪汪 啊呜的叫");
    	}
    

到了这里,关于实训笔记6.6的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 粤嵌实训笔记二

    1、在Linux下,使用 gcc 来编译 gcc xxx.c -- 默认生成的可执行文件 名为 a.out gcc xxx.c -o xx -- 生成指定名字的可执行文件 xx 2、交叉编译 :在一个环境下编译生成 适用于 另一个环境下的可执行文件 3、为交叉编译工具创建软连接 sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-

    2024年02月03日
    浏览(40)
  • 实训笔记7.24

    1.1 涉及到一些框架核心组件 1.1.1 InputFotmat 1.1.2 MapTask 1.1. 3Partitioner 1.1.4 WritableComparable 1.1.5 Combiner(可选) 1.1.6 WritableComparator(GroupingComparator) 1.1.7 ReduceTask 1.1.8 OutputFormat SequenceFile文件是Hadoop提供的一种比较的特殊的文件,文件中存储的是key-value的二进制数据,而且SequenceFile文

    2024年02月16日
    浏览(36)
  • 实训笔记6.21

    我的故事你说,我的文字我落,我值几两你定,我去何方我挑。 2.1 JavaIO流 2.1.1 从三个角度分为六类 输入流和输出流 字节流和字符流 节点流和功能流 2.1.2 IO流的四大抽象基类 四大抽象基类 InputStream OutputStream Reader Writer InputStream、OutputStream: 所有格式的数据 Reader、Writer:

    2024年02月10日
    浏览(32)
  • 实训笔记7.19

    我的故事你说,我的文字我落,我值几两你定,我去何方我挑。 2.1 HDFS上传数据的流程 2.2 HDFS下载数据的流程 2.1~2.2:客户端Client 主节点NameNode 从节点DataNode 2.3 HDFS中NameNode和SecondaryNameNode工作机制(涉及到HDFS的元数据管理操作) 一个概念和两个文件:元数据、edits编辑日志文

    2024年02月16日
    浏览(34)
  • 实训笔记8.22

    1.1 DDL 1.1.1 Hive中数据表的分类问题 Hive中数据表的分类只是用来告诉我们Hive底层在HDFS上存储的文件的规则和规范 1.1.2 特殊的数据类型 array、map、struct Hive数据表可以指定底层的存储格式的分隔符问题row format 1.2 DML Hive中默认不支持批量的删除和更新操作 增加数据 装载数据 追

    2024年02月11日
    浏览(33)
  • 实训笔记6.26

    我的故事你说,我的文字我落,我值几两你定,我去何方我挑。 2.1 Java多线程 2.1.1 一些概念知识 程序、进程、线程 单核CPU和多核CPU 并行和并发 2.1.2 多线程的创建方式 继承Thread类,重写run方法 实现Runnable接口,重写run方法 实现Callable接口,重写call方法 使用线程池 缓存线程

    2024年02月11日
    浏览(35)
  • 实训笔记9.4

    git官网 1.1 建立仓库 git init 1.2 添加到暂存区 git add 文件名称 git add . 1.3 提交到历史区 git commit -m \\\"提交信息\\\" 1.4 查看 1.4.1 查看当前版本库状态 git status 1.4.2 查看版本日志信息 git log git log --oneline 单行模式 git log --oneline --graph ——单行带图形 1.4.3 查看版本的变更历史 git reflog

    2024年02月09日
    浏览(34)
  • 实训笔记8.25

    将海量的数据通过某种技术采集到大数据环境中进行存储和管理,为后期的大数据处理分析做准备 常见的数据:网站/软件的运行日志、记录的日志,软件的结构化数据、爬虫数据、传感器采集数据… Flume是apache开源的顶尖项目,专门是采集和聚合海量的日志数据。但是随着

    2024年02月11日
    浏览(36)
  • 实训笔记8.29

    1.1 项目的预备知识 1.1.1 电商平台 1.1.2 用户行为数据 访客的用户信息 访客的终端信息 请求网址信息 请求来源信息 请求的产品信息 1.1.3 常见的软件/网站的组成和技术实现 前端 后端 数据库 1.1.4 大数据中数据计算场景 离线计算 实时计算 图计算 算法挖掘推荐等等 1.2 项目的

    2024年02月10日
    浏览(37)
  • 实训笔记7.7

    我的故事你说,我的文字我落,我值几两你定,我去何方我挑。 2.1 使用ssh远程连接协议进行连接 2.2 ssh使用有两种方式 使用命令来连接 ssh 用户名@ip 使用一些软件来连接 xshell finalshell 3.1 查看当前工作目录 pwd 3.2 切换工作目录的命令 cd 路径(绝对路径/相对路径) Linux的目录

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包