Java 初级其它类学习笔记(基础)

2023-11-02

外部类和内部类

外部类的封装等级只有以下两种形式:

1.
public class 外部类名 {

}
//有public修饰符的外部类属于对外公开的“文件类”,即.java文件名与此类名保持一致
2.
class 外部类名 {

}
//“缺省”修饰的外部类属于普通类,而非“文件类”

内部类一般形式:

class 外部类名 {
    class 内部类名 {

    }
}

(内部类属于外部类中的,所以内部类可以直接访问外部类的成员,包括私有成员。反之外部类要访问内部类的成员,就必须建立内部类的对象)

abstract 抽象类及其抽象方法

        首先它们都得用 abstract 来修饰,而抽象方法不能拥有方法体。而要创建对象需借助向上转型,主要目的是被其子类调用。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

注意:外部抽象类不能用 static 修饰,但内部的抽象类可以使用 static 修饰。抽象类也可以继承抽象类,但只有具体非抽象派生类才能重写它里面的方法或创建实例。

interface 接口指导和规范

        interface 接口可以说是抽象类独立出来的特例。Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征而缺少方法的实现,而这些方法可以在不同的地方被不同的类实现,通过实现可以具有不同的行为(功能)。

abstract VS interface
abstract interface
是否允许有实例变量 ×
是否允许有静态成员变量 都允许
静态成员变量的类型限制 访问类型任意 只能是 public static final 类型,且默认为此类型
是否允许有构造方法 允许,但不能被实例化 不允许
是否兼容 private、final 关键字 都不允许(因为它俩是杜绝重写和继承的)
是否允许有静态方法 都允许
是否允许有抽象和非抽象的方法 都允许
与类关系 继承关系 实现关系
从类的层次上看 本质上是个类 从抽象类独立出来的一个特例
性质 指导类、定义类模板 更方便地指导类、定义类模版
总结
  • 一个类可以实现多个接口,但最多只能继承一个抽象类(多实现,单继承
  • 有抽象方法的一定是抽象类;但有抽象方法不一定是抽象类,也有可能是接口

匿名内部类(是内部类的简化/“一次性”写法)

出现背景:需要一个子类或实现类,但它的使用频率不高(一次性的),所以我们没必要把它编写成独立的一个类,这就需要使用匿名内部类了!

前提:父类或接口 二选一,且最多只能选择一个继承/实现。

匿名内部类 VS 抽象类
匿名内部类 抽象类
是否有构造方法 没有,但可以定义实例初始化块(构造方法的方法名需要和类名一致,而匿名内部类没有类名) 有,但不能实例化
能否创建实例 匿名内部类可以创建实例 抽象类不能创建实例

格式:

外部类.内部类 对象名=new 外部类().内部类() {方法重写};

匿名内部类的子类/实现类构造例子:

1.
abstract class Father {
...
}

public class anonymity {
    Father f = new Father() {
//这{}里就是个匿名内部类,注意有个分号;在下面        
    };
}

2.
interface Father {
...
}

public class anonymity {
    Father f = new Father() {
//注意!匿名内部类的作用域就是这个{}里面    
    };
}

而匿名方法最常用的情况体现在多线程上!因为要实现多线程就必须继承Thread类或实现Runnable接口,这正好符合匿名内部类的使用前提。

例子代码如下:

public class ThreadDemo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            @Override
            public void run() {
                super.run();
//这里写你自己想同步的线程代码
            }
        }
    }
}

Object类

Date类

System类

String体系类

包装类

有空再补充这些类的专写,拜拜!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 初级其它类学习笔记(基础) 的相关文章

随机推荐

  • 一文告诉你如何在Linux中设置定时清除运行内存(buff_cache)的脚本

    一文告诉你如何在Linux中设置定时清除运行内存 buff cache 的脚本 前语 1 查看内存缓存状态 2 配置清理缓存的脚本 2 1 新建或打开脚本 2 2 clear buff cache配置文件中增加如下代码 3 设置定时任务 大
  • 最新Web前端面试题精选大全及答案

    目录 HTML CSS相关 Javascript相关 三者的异同 Vue相关 55 Vue路由懒加载 按需加载路由 React相关 react 生命周期函数 为什么虚拟 dom 会提高性能 必考 组件的 状态 state 和属性 props
  • Kali-工具-sqlmap常见用法

    SQLmap常见用法 r 这个参数是将 抓到的请求包复制一个文件中然后使用此参数进行扫描 get post提交方法都支持 例如 rp txt 是抓取的数据包 sqlmap r rp txt 也可以加 p 指定注入点 sqlmap r rp
  • Element UI的表单验证

    Element UI表单有3种验证方式 1 在表单中加rules属性 然后data里面写具体的验证规则就好 rules里面可以写正则表达式验证
  • 《因果推断入门》总结

    内容来源 饺子博士and饭老师 目录 一 概率统计基础工具 二 图模型 三 结构因果模型 四 辛普森悖论 五 D 分隔 六 模型检验和等价类 七 乘积分解法则 八 混淆变量 九 A B test 十 总结 一 概率统计基础工具 1 随机事件
  • mission planner SITL仿真系统配置

    背景 主要参考ArduPilot的官网 作者还拥有个人公众号 会写一些感悟文章 知圈 二维码如下 欢迎扫描关注 关注后有作者微信 欢迎添加交流 链路图 图源 Cygwin 下载 去官网下载Cygwin 作者电脑windows 10 64位
  • LeetCode146- LRU 缓存

    class LRUCache public struct Node int key val Node left right Node int key int val key key val val left NULL right NULL
  • elasticsearch入门

    elasticsearch 基础 创建客户端 public class HelloElasticsearch public static void main String args throws IOException 创建客户端对象 Re
  • vue项目播放H.265编码视频流

    vue项目播放H 265编码视频流 问题 目前使用的video js video player 不支持对H 265的视频格式的支持 1 在有的摄像头配置里面是可以设置H 264还是H 265 如下图所示 针对H 265的视频流的解决方案可用
  • cp: cannot stat ‘xxx.dcm‘: No such file or directory

    背景 ubuntu16 0 4系统使用cp命令拷贝软链接文件时 报上述错误 在待拷贝文件夹内使用 ls l 命令查看文件形式 如下 lrwxrwxrwx 1 root root 166 8月 16 2021 xxx dcm gt data
  • 华为云云耀云服务器L实例评测|基于云耀云服务器在Docker上部署nginx服务

    文章目录 1 服务介绍 云耀云服务器 Docker介绍 Docker Compse介绍 2 在云耀云服务器安装Docker 3 通过Docker run命令运行nginx服务 4 在云耀云服务器安装docker compose 5 通过do
  • IDEA中 Ctrl+ALT+V这个快捷键无法使用

    这个是由于快捷键冲突造成的 所以可以查应用 比如 1 搜狗输入法中设置的语句 2 QQ音乐的快捷键 3 有道词典的快键键 把上面找的快键键删除 那么在IDEA里面就可以使用了 若是查询的时候出现下图时 那么就是可以使用了
  • 移除元素

    题目 给定一个数组 nums 和一个值 val 你需要
  • 智慧灌区闸控一体化解决方案

    智慧灌区闸控一体化解决方案是指将灌溉系统中的闸门控制与水文监测 远程通信和数据管理等功能相集成 实现对灌区水资源的智能化管理和控制的方案 以下是智慧灌区闸控一体化解决方案的主要组成部分 闸门控制系统 包括闸门 闸门执行器和控制器等设备 闸门
  • springsecurity2.0.6代码分析成果

    之前也试着玩过springsecurity 这回把它搬到项目中 却遇到了意想不到的麻烦 我定义了一些角色与资源 下表显示了它们的情况 Loginer Role Resource Description admin ROLE ADMIN ac
  • 优先级队列(堆)&&  堆排序

    前面介绍过队列 队列是一种先进先出 FIFO 的数据结构 但有些情况下 操作的数据可能带有优先级 一般出队列时 可能需要优先级高的元素先出队列 该中场景下 使用队列显然不合适 比如 在手机上玩游戏的时候 如果有来电 那么系统应该优先处理打进
  • linux内核压缩方式调研

    kernel镜像格式 1 vmlinux vmlinuz是可引导的 可压缩的内核镜像 vm代表Virtual Memory 是由用户对内核源码编译得到 实质是elf格式的文件 内含符号表 可用于调试 2 Image Image是经过objc
  • 花上厕所的时间搞懂一些前端基础知识

    深入到pc端网站布局 品优购静态网站 精通网页布局 前端人员的必备技能 初步认识前端 我们上网这些网页 网站是谁做出来的啊 前端程序员 浏览器的杰作 掌握 html gt css gt H5C3提高 什么是网页 html文件 浏览器 阅读
  • QuartusII 9.0安装破解教程详解及例程测试

    https blog csdn net qq 36243942 article details 83033391
  • Java 初级其它类学习笔记(基础)

    外部类和内部类 外部类的封装等级只有以下两种形式 1 public class 外部类名 有public修饰符的外部类属于对外公开的 文件类 即 java文件名与此类名保持一致 2 class 外部类名 缺省 修饰的外部类属于普通类 而非