一、继承条件下的构造方法调用

 class Grandparent {

     public Grandparent() {
System.out.println("GrandParent Created.");
} public Grandparent(String string) {
System.out.println("GrandParent Created.String:" + string);
}
} class Parent extends Grandparent { public Parent() {
//super("Hello.Grandparent.");
System.out.println("Parent Created");
// super("Hello.Grandparent.");
}
} class Child extends Parent { public Child() {
System.out.println("Child Created");
}
} public class TestInherits { @SuppressWarnings("unused")
public static void main(String args[]) {
Child c = new Child();
}
}

  

  通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。

二、方法覆盖

 public class Fruit
{ public String toString()
{
return "Fruit toString.";
} public static void main(String args[])
{
Fruit f=new Fruit();
System.out.println("f="+f);
// System.out.println("f="+f.toString());
}
}

  

  

  Fruit类覆盖了Object类的toString方法。在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ +   hashCode”。为了返回有意义的信息,子类可以重写toString()方法。方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!

  Java“方法覆盖”的语法规则:

  (1)覆盖方法的允许访问范围不能小于原方法。

  (2)覆盖方法所抛出的异常不能比原方法更多。

  (3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

  (4)不能覆盖静态方法。

三、道至简第六章发表阅读笔记

  第六章引用了《列子》的一句话“得其精而忘其粗,在其内而忘其外;见其所见,不见其所不见,视其所视,而遗其所不视。”这句话的意思是:得到它的精髓却忘记了它的粗,在它内部却忘记了它的外部;只能看到能见到的东西,而不能看到那些看不到的东西。要知道程序语言对于一个编程人员而言仅仅是一个工具、一个媒介。作为IT项目开发的人员,看清楚大的程序只是项目的开始而已。

按照人类的发展史来看,猿人与人类的关键差别在于,是否学会制作和使用工具。而编程人员也常常被称为程序猿,我觉得也有可能是因为我们队工具的盲目。

我们目前所学过C++,JAVA与其说是技术课程,还不如说是语言。这几门语言,就是用于和计算机对话的。而我感觉我们是用学英语的方法来学习程序语言的。我们太专注遇语言工具的的学习了。对于其他专业知识反而造成了忽视。作者在第一章中曾经说过:成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。语言仅仅是一个工具,一个我们用来实现工程的工具。

在本章的第二节中,作者提出了程序的本源定义“程序=算法+结构”,这也是原始的状态。任何与编程相关的工作,都是以此为本源中心。就像英语单词都是由26个字母组成的。所以所有的程序代码都是由“程序=算法+结构”得来的。即使面对复杂的程序,我们也应该抽丝剥茧地理清思路,这样就很容易看懂程序了。

随着事情的发展,根据前人的实践和总结,过程、对象和方法都出现了。方法和方法论是用于推动程序向前发展的。要知道的是方法不是实物,不能被看到,只有拥有足够的编程经验才能理解。并且理解过程需要编程经验,理解对象也需要编程经验,也就是说我们需要的是熟能生巧。过程是伴随着工程而出现的,过程就是角色、沟通和环节,解决的是角色间的关系问题。

最狭义的工程,是“做什么”和“做到什么”。也就是说,把我们要实现的目标通过语言、方法、工具实现出来的就是工程。工程需要方法和过程来达成。对于大的工程而言,团队极为重要。一个人是很难高效率地完成大工程的。在现今社会中,如果没有团队意识,那么就会一触而溃。

在团队中,组织是很重要的。这个组织无关于技术,而重点放在人力资源、项目资金和项目组的协同等方面。工程理论其实就囊括了组织学。当工程关注的只是需求、配置和文档等要素,那么这样的过程是肤浅的技术层面。所以我们应该关注的还是实现工程的细节,而非目标。这些应该是项目经理和技术经理所共同关注的一部分。

实现是开发项目的本质性需求。为了去实现项目,我们需要不断积累和时间来总结和归纳方法。由于“实现”的需要,我们有了团队组织、有了模型、有了语言工具。

Java 接口与继承 道至简第六章发表阅读笔记的更多相关文章

  1. java接口可以继承多个接口

    接口是常量值和方法定义的集合.接口是一种特殊的抽象类.   java类是单继承的.classB Extends classA java接口可以多继承.Interface3 Extends Interf ...

  2. Java 接口多继承

    按照理解,一般都是说Java 类是单继承,但可以实现多个接口.但是可以通过接口来实现类的多继承.(如何通过接口来实现多继承???) 那么就一直以为Java里面是单继承,今天看FutureTask源码的 ...

  3. JAVA接口的继承与集合

    复习 20190701 接口补充 一. java是单继承多实现 单继承: 一个类只能有一个父类 public class D extends D1 { } 2. 多实现 一个类可以同时实现多个接口 当 ...

  4. java 接口与继承

    一.继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构 ...

  5. JAVA 接口与继承作业——动手动脑以及课后实验性问题

    一.继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构 ...

  6. Java接口与继承作业

    为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来? 因为子类继承了父类,那么就默认的含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明.如果 ...

  7. java接口与继承

    class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } p ...

  8. Java伪代码描述《大道至简》第一章

    第一节 Begin //原始需求 惩山北之塞,出入之迂 //项目沟通的基本方式 聚室而谋曰 //项目目标 毕力平险,指通豫南,达于汉阴 //技术方案 扣石垦壤,箕畚运于渤海之尾 //技术人员和工程管理 ...

  9. Java并发编程的艺术(一、二章) ——学习笔记

    第一章  并发编程的挑战 需要了解的一些概念 转自 https://blog.csdn.net/TzBugs/article/details/80921351 (1) 同步VS异步 同步和异步通常用来 ...

随机推荐

  1. 004-搭建框架-实现AOP机制【一】代理技术

    前景提要 监控方法性能.执行时间.记录日志等 AOP( Aspect Oriented Programming)面向方面编程. 在AOP中,需要定义一个Aspect(切面)类来编写需要横切业务的逻辑代 ...

  2. sql server2005版本中,len函数计算了字符串末尾的空格

    sql server2005版本中,len函数计算了字符串末尾的空格的长度,以下是测试脚本: print @@version declare @v varchar(max) set @v = 'hp, ...

  3. ACM解题之(ZOJ 2212) Argus

    题目来源: 点击打开题目 题目翻译: 数据流是实时的,连续的,有序的项目序列.一些例子包括传感器数据,互联网流量,金融代码,在线拍卖以及诸如网络使用日志和电话记录之类的交易日志.同样,对流进行的查询在 ...

  4. Django序列化

    一.Django序列化    1.序列化应用场景     1.关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,由于httpresponse只能返回字符串或者是字节,而从数据库 ...

  5. Objective-C 继承和多态

    学习Java我们知道类有三大特征,封装,继承,多态.而在Objective-C中也有继承的概念,今天就来看看Objective-C中的继承和多态. 首先,我们来看看示例代码: //Animal.h # ...

  6. Spring AOP 学习(一) 代理模式

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...

  7. MySQL-重做日志 redo log -原理

    [redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_buffer 原理 4.redo_log_file ...

  8. Python的文件读写与存储

    文件读写与存储 7.2. 读写文件 open()返回一个文件对象,最常见的用法带有两个参数:open(filename, mode). >>> f = open('workfile' ...

  9. IDEA中集成JRebel插件

    下载下面2个插件 jr-ide-intellij-6.4.3_13-16.zip --- 官网的jar(地址:https://plugins.jetbrains.com/plugin/4441-jre ...

  10. 常用 GDB 命令中文速览

    转自:https://linux.cn/article-8900-1.html?utm_source=index&utm_medium=moremore 目录 break -- 在指定的行或函 ...