我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JAVA编程思想笔记 : 复用类

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JAVA编程思想笔记 : 复用类

复用代码是 Java 众多引人注目的功能之一.但是想要成为机具革命性的语言,仅仅能复制代码并对之加以改变是不够的,它还必须能够做更多的事情.

组合语法

只需将对象引用置于新类中即可.

初始化引用位置

定义对象的地方,他们总是能够在构造器被调用之前初始化.

在类的构造器中

就在要使用这些对象之前, --- 惰性初始化

实例初始化

继承语法

除非已明确指出要从其他类中继承,否则就是在隐式的从 java 的标准根类 Object 进行继承.

初始化基类

代理

Java 语言不直接支持代理. 很多开发工具却支持.

在集合与继承之间选择

组合和继承都允许在新的类中放置子对象. 组合是显式的做,继承则是隐式的做.

protected 关键字

就类用户而言,是 private 的,对于任何继承此类的导出类或其他任何位于同一个包内的类来说,他是可以访问的.

向上转型

you导出类转换为积累,在继承图上是向上移动的,成为向上转型.

向上转型是从一个较专用类型向较通用类型转换,所以总是很安全.

java-12.png

final 关键字

无法改变

final 数据

一个既是 static 优势 final 的域只占据一段不能改变的存储空间.

对于基本类型,final 数值恒定不变.对于对象引用,final 使引用恒定不变.

一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象.然而对象本身是可以修改的.

Java 并未提供使任何对象恒定不变的途径.

这一限制同样适用数组,他也是对象.

根据惯例,既是 static 又是 final 的域将用大写表示,并适用下划线分隔各个单词.

空白 final

所谓的空白 final 是指被声明为 final 但又未给定初始值的域.

无论什么情况,编译器都确保空白 final 在使用前必须被初始化.

final 参数

允许在参数列表中以声明的方式将参数指明为 final.意味着你无法再方法中更改参数引用所指向的对象.

final 方法

把方法锁定,以防任何继承类修改它的含义.

效率,在早期实现,如果将一个方法指明为 final,就是同意编译器将针对该方法的所有调用都转为内嵌调用.

final 和 private 关键字

类中所有的 private 方法都是隐式地指定为 final 的.

由于无法采用 private 方法,也就无法覆盖它.

可以地 private 方法添加 final 修饰词,但并不能给该方法增加任何额外的意义.

"覆盖" 只有在某方法是基类的接口的一部分时才会出现.

必须将一个对象向上转型为她的基本类型并调用相同的方法.

final 类

禁止被继承,没有子类.

所有 final 类中的所有方法,都隐式指定为 final,无法覆盖.

初始化及类的加载

class Insect {
    private int i = 9 ;
    protected int j ;
    Insect(){
        System.out.println("Insect constructor.");
        System.out.println("i= "+i+", j="+j);
        j = 39 ;
    }
    static int printInit(String s){
        System.out.println(s);
        return 47 ;
    }
}
public class Beetle  extends  Insect {
    private int k = printInit("Beetle.k initialized . ");
    public Beetle(){
        System.out.println("k = "+ k);
        System.out.println("j = " + j);
    }
    private static int x2 = printInit("static Beetle.x2 initialized ") ;
    public static void main(String[] args) {
        System.out.println("Beetle constructor.");
        Beetle b = new Beetle();
    }
}
输出:
static Beetle.x2 initialized 
Beetle constructor.
Insect constructor.
i= 9, j=0
Beetle.k initialized . 
k = 47
j = 39

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JAVA编程思想笔记 : 复用类

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JAVA编程思想笔记 : 复用类

复用代码是 Java 众多引人注目的功能之一.但是想要成为机具革命性的语言,仅仅能复制代码并对之加以改变是不够的,它还必须能够做更多的事情.组合语法只需将对象引用置于新类中即可.初始化引用位置定义对象的地方,他们总是能够在构造器被调用之前初始化.在类的构造器中
JAVA编程思想笔记 : 复用类
2021-03-31

Java编程思想(2nd)学习笔记(8)-2 (转)

Java编程思想(2nd)学习笔记(8)-2 (转)[@more@]二. Inner classes(内隐类)1. 内隐类的基本用法1) 如果要在外围class的non-static函数之外产生一个inner class对象,得以Ou
2023-06-03

《Java编程思想》学习笔记03、控制程序流

1、大部分操作符只能操作基本类型(primitives),只有=、==和!=可以操作对象,另外String支持+和+=2、在=两边,右值(rvalue)可以是常数、变量或表达式,左值(lvalue)必须是一个变量,即必须有物理空间来存储rv
2023-06-03

学点Java里的编程思想(r12笔记第65天)

按照自己之前的计划,我觉得得看看关于开发的东西了,因为我对于并发,锁的认知总是有一个局限性,自己也在地铁上做了些功课。有了这个想法,再有拿起书的勇气,那就是一个开始了。 每个圈子都有自己喜爱的图书,就如同Oracle圈子对于Tom
2023-06-03

Java编程思想学习笔记2 - 字节流和字符流

《Thinking in Java》第18章的内容是相当丰富精彩的,也在网络学习参考了很多前辈们的笔记,个人由于能力有限(毕竟和大神Bruce Eckel的能力相差甚远),将这一章的内容分三个部分来写,希望能够慢慢品味和领悟Java IO的
2023-06-02

Java语言面向对象编程思想之类与对象实例详解

在初学者学Java的时候,面向对象很难让人搞懂,那么今天小编就来为大家把这个思想来为大家用极为简单的方法理解吧。首先我们来简单的阐述面向对象的思想。面向对象:官方的语言很抽象,我们把官方的解释和定义抛开。想想,自己有什么,对!!我们自己有手
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录