当前位置: 首页 > 编程日记 > 正文

[Core Java® for the Impatient]重载Java2

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Chapter 2. Object-Oriented Programming

  1. Set(Mutator Methods)方法改变对象的状态,Get(accessor methods)方法则不;

  2. Java中变量不持有对象,他们引用对象;

  3. 变量的实例和方法的实现在类的声明部分声明;

  4. 对象调用自身实例化的方法,靠this引用

5.    构造方法与类同名,一个类可以拥有多个构造方法;

6.    静态变量不属于任何对象,静态方法不通过对象调用

7.    类之间通过包来组织,使用import声明使得你不需要在程序里写完整的包名;

    8.    类可以嵌套;

    9.    内部类是非静态的嵌套类,其实例拥有构造过的嵌入类的引用;

    10.    Java doc工具处理源文件产生HTML格式的代码注释;


基本概念:

encapsulation 封装

inheritance 继承

polymorphism 多态


mutator => setter

accessor => getter

Java8 多了一种参数方式,receiver parameter

我们可以使用this作为参数,但是要保证JDK版本,否则

095706_NScV_921876.png

jls有详细说明:

http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1

Here are some examples of receiver parameters in instance methods and inner classes' constructors:
class Test {Test(/* ?? ?? */) {}// No receiver parameter is permitted in the constructor of// a top level class, as there is no conceivable type or name.void m(Test this) {}// OK: receiver parameter in an instance methodstatic void n(Test this) {}// Illegal: receiver parameter in a static method                         class A {A(Test Test.this) {}// OK: the receiver parameter represents the instance// of Test which immediately encloses the instance// of A being constructed.void m(A this) {}// OK: the receiver parameter represents the instance // of A for which A.m() is invoked.class B {B(Test.A A.this) {}// OK: the receiver parameter represents the instance // of A which immediately encloses the instance of B // being constructed.void m(Test.A.B this) {}// OK: the receiver parameter represents the instance // of B for which B.m() is invoked.}}
}
B's constructor and instance method show that the type of the receiver parameter may be denoted with a qualified TypeName like any other type; but that the name of the receiver parameter in an inner class's constructor must use the simple name of the enclosing class.


内部类不可以拥有静态变量和静态方法,但是可以拥有常量。

public class Test {class TestClass {private final static int num = 0;// rightprivate static int id = 0;//Error:(17, 28) java: Illegal static declaration in inner class com.scb.smarttrans.utils.generator.Test.TestClassmodifier 'static' is only allowed in constant variable declarationspublic static int addOne() {return ++id;} //Error:(19, 27) java: Illegal static declaration in inner class com.scb.smarttrans.utils.generator.Test.TestClassmodifier 'static' is only allowed in constant variable declarations}
}

作者趁机小黑了一把Java Designer

Inner classes cannot declare static members other than compile-time constants. There would be an ambiguity about the meaning of “static.” Does it mean there is only one instance in the virtual machine? Or only one instance per outer object? The language designers decided not to tackle this issue.

文档注释有些不常见的用法:

/**
* An <code>Invoice</code> object represents an invoice with
* line items for each part of the order.
*
* @param byPercent the percentage by which to raise the salary (e.g., 10 means 10%)
* @author Fred Flintstone
* @author Barney Rubble
* @version 1.1
*          <p>
*          Raises the salary of an employee.
* @return the amount of the raise
* @see com.horstmann.corejava.Employee#raiseSalary(double)
* @see <a href="http://en.wikipedia.org/wiki/Leap_year">Leap years</a>.
* @see "Core Java for the Impatient"
* {@link package.class#feature label}
* <img src="doc-files/uml.png" alt="UML diagram"/>.
* @since version 1.7.1
* @deprecated Use <code>setVisible(true)</code> instead
*/



转载于:https://my.oschina.net/u/921876/blog/663227

相关文章:

linux系统与内核,[科普] Linux 的内核与 Linux 系统之间的关系

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在 FHS 协议里&#xff0c;有这样的规定&#xff1a;/bin/ 需要在单用户模式可用的必要命令(可执行文件)&#xff1b;面向所有用户&#xff0c;例如&#xff1a; cat、 ls、 cp。/boot/ 引导程序文件&#xff0c;例如&#xff1a; …

pynput使用简单说明

控制鼠标 1 from pynput.mouse import Button, Controller2 import time 3 4 mouse Controller()5 print(mouse.position)6 time.sleep(3)7 print(The current pointer position is {0}.format(mouse.position))8 9 10 #set pointer positon 11 mouse.position (277, 645) …

linux qt5.7下打地鼠源程序,基于QT的打地鼠游戏

【实例简介】基于QT的一个打地鼠游戏&#xff0c;采用随机数的方法&#xff0c;是地鼠产生随机序列&#xff0c;有得分界面&#xff0c;动画效果也不错&#xff0c;用C进行编程【实例截图】【核心代码】打地鼠└── 打地鼠├── erwei│ ├── Makefile│ ├── Makefi…

事务隔离机制原理深入分析以及MySQL不同隔离级别分场景下实验对比

这是我总结的事务的四种隔离机制&#xff0c;比较好理解&#xff0c;主要是有些地方文字游戏说不清楚很容易混淆&#xff1a; Read Uncommitted&#xff08;读未提交&#xff09;A未完&#xff0c;B已更新&#xff0c;未提交&#xff0c;A读到B已更新的数据&#xff0c;由于未…

cogs 362. [CEOI2004]锯木厂选址

★★★ 输入文件&#xff1a;two.in 输出文件&#xff1a;two.out 简单对比 时间限制&#xff1a;0.1 s 内存限制&#xff1a;32 MB 从山顶上到山底下沿着一条直线种植了n棵老树。当地的政府决定把他们砍下来。为了不浪费任何一棵木…

中小企业低成本快速建站的秘诀——模板建站

从14年至今&#xff0c;小乔已经给很多行业的客户做了不少网站。在跟我咨询建站的这些人当中&#xff0c;其实不乏一些创业初期经济比较紧张的个人/公司。这些个人/公司需要一个网站对外宣传&#xff0c;但又希望可以节省开支&#xff0c;所以他们往往会选择成本低的建站服务&a…

MySQL常用性能分析方法-profile,explain,索引

1.查版本号 无论做什么都要确认版本号&#xff0c;不同的版本号下会有各种差异。 >Select version();2.执行状态分析 显示哪些线程正在运行 >show processlist;下面是完整的信息3.show profile show profile默认的是关闭的&#xff0c;但是会话级别可以开启这个功能&…

MathType在手,公式不求人!

很多论文达人们的论文排版是相当漂亮的&#xff0c;页面也非常整齐美观&#xff0c;即使是理工类的论文&#xff0c;里面有很多的数学符号和公式&#xff0c;排版也是非常整洁&#xff0c;为什么达人们的公式论文能排版的这么完美&#xff0c;而自已却总是不得其门而入&#xf…

Linux系统mongdb还原数据库,linux下mongodb数据库备份与还原

MongoDb数据库备份还原数据库迁移,可视化工具NoSQLBooster for MongoDB 付费版才具有数据导入功能.代价过高,索性采起命令行web数据备份备份命令mongodbmongodump -h dbhost -d dbname -o dbdirectory-h&#xff1a;MongDB所在服务器地址&#xff0c;例如&#xff1a;127.0.0.1…

【逆序对】Ultra - Quicksort

POJ 2299 Ultra-QuickSort 只允许交换&#xff0c;比较相邻的元素&#xff0c; 求最少多少次交换可以使得序列有序 冒泡排序的次数——>数列中逆序对的个数减1——>最终为0 ——>答案为数列中逆序对的个数——> 归并排序求逆序对qwq 注意cnt开long long 不然会炸QA…

Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点

转载于&#xff1a;http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中&#xff0c;我主要讲解了Android源码中的Touch事件的传递过程&#xff0c;现在我想使用一个demo以及一个实例来学习一下Andorid中的Touch事件处理过程。 在Android系统中&#xff0…

SpringBoot使用笔记

其实也是参考官方的&#xff1a;http://spring.io/guides/gs/rest-service/ &#xff0c;在官方代码基础上加入了很多实用的东西&#xff0c;比如运行环境启动命令等等。 官方文档&#xff1a;http://docs.spring.io/spring-boot/docs/current/reference/html/ SpringBoot并不…

linux卸载欧朋浏览器,如何在Centos下安装opera浏览器

如何在Centos下安装opera浏览器 &#xff0c;Opera目前是Linux平台上性能最优的浏览器&#xff0c;而且Opera中国团队本身即定位于Opera的研发中心&#xff0c;主要也是负责全球Linux平台项目的开发&#xff0c;这个版本初步解决了经年来Linux上Opera中文字体显示混乱的问题。我…

1-1 分配内存资源给容器和POD

这一小节讲解如何分配内存请求和对一个容器做内存限制。一个容器被保证拥有足够的内存可以处理请求&#xff0c;但是也不允许使用超过限制的内存。 开始之前 需要拥有一个k8s集群 需要安装好一个kubectl 工具&#xff0c;并且能够与集群通信。 如果没有准备好&#xff0c;你…

Java的SPI机制

Dubbo等框架使用到必须掌握。 java.sql.Driver 是 Spi&#xff0c;com.mysql.jdbc.Driver 是 Spi 实现&#xff0c;其它的都是 Api。package org.hadoop.java;public interface IService {public String sayHello(); public String getScheme(); }package org.hadoop.java…

你不知道的对称密钥与非对称密钥

&#xff08;一&#xff09;对称加密&#xff08;Symmetric Cryptography&#xff09; 对称密钥加密&#xff0c;又称私钥加密&#xff0c;即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快&#xff0c;适合于对大数据量进行加密&#xff0c;对…

linux sntp 代码,C语言window(linux)平台的SNTP实现

C语言实现window(linux)平台的SNTP&#xff0c;本程序功能主要是实现电脑(或者设备)时间同步。摘录部分代码&#xff1a;unsigned char liVnMode; /* LeapSecond(2bits:0), VersionNumber(3bits: 3), Mode(3bits: Client3, Server4) */unsigned char stratum; /* 时间层级 (0-1…

在typescript中导入第三方类库import报错

问题 最近开始折腾typescript&#xff0c;在使用第三方类库&#xff0c;比如最常见的lodash&#xff0c;采用常规方法导入 import * as _ from lodashvscode中报错提示lodash不是module。 原因 因为第三方类库并没有ts的声明文件&#xff0c;查阅网上资料&#xff0c;有typings…

JavaAgent 实现字节码注入

新建MyAgent项目 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

php打印中文乱码

php文档的文本格式都设置成 utf-8 格式 在代码中添加 header("content-type:text/html; charsetutf-8"); 转载于:https://www.cnblogs.com/negro-guoguo/p/5421355.html

linux孤立cpu,Linux 抛弃旧款 CPU,一下子少 50 万行代码

IT 之家4 月 3 日消息 Linux 内核维护者已经决定在即将发布的新版本中抛弃对旧款 CPU 架构的支持&#xff0c;因此 Linux 4.17 内核将减少大约 500000 行代码&#xff0c;根据 Linux 统计器&#xff0c;目前它包含大约 2030 万行代码。IT 之家报道&#xff0c;将被弃用的体系架…

CSS3 从头捋

1.border-radius 边界半径 作用&#xff1a;该属性用来实现圆角 示例1实现圆角 div {border:2px solid red;width:300px;border-radius:25px; } 示例2实现圆 div {border: 1px solid red;height: 100px;width: 100px;border-radius: 50%; } 示例3 不规则圆 div {border: 1px s…

算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

算法&#xff1a;详解布隆过滤器的原理、使用场景和注意事项知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构&#xff0c;比较巧妙的概率型数据结构&#xff08;probabilistic data structure&#xff09;&#xff0c;特点是高效地插入和查询&#xff0c;可…

linux shell显示下载进度,shell脚本测试下载速度

在linux下用shell来测试下载速度&#xff0c;很实用的shell代码。代码&#xff1a;复制代码 代码示例:#!/bin/bash#date:20140210# edit: www.jquerycn.cn#used for test server download speedr_host"188.18.28.19"r_dir"/home/test0208/tmp"r_file"…

openStack调试

openStack调试 posted on 2016-04-23 22:07 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ruiy/p/5425823.html

快应用开发常见问题以及解决方案【持续更新】

接触快应用也有一段时间了&#xff0c;踩过了大大小小的坑&#xff0c;让我活到了今天。准备在此立贴持续更新&#xff0c;记录遇到的问题以及解决方案&#xff0c;造福大众。css 方面 1、文字竖排不支持 目前官方还不支持writing-mode&#xff0c;除了等待官方支持这个api以外…

Java字节码研究

关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》 1.String和常连池 先上代码&#xff1a; public class TestApp {public static void main(String[] args) {String s1 "abc";String s2 new String("abc");St…

在c语言中逗号的作用,关于c语言中的逗号运算符???

等下。。答错了。。还需要理解一下神马是逗号表达式。。我前面说的和uuyyhhjj与delta_charlie的意思一样&#xff0c;但其实我们都搞错了。你可以自己把我们的例子都运行一下&#xff0c;看看是不是这样。下面我感觉应该是我正确的理解。逗号表达式是所有运算符中优先级最低的&…

2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结

- 2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结 - 教材学习内容总结 程序员可见的状态&#xff1a;Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分&#xff0c;这称为程序员可见状态。包括&#xff1a;程序寄存器、条件码、程序状态、程序计数器和…