zoukankan      html  css  js  c++  java
  • Java 接口与继承 道至简第六章发表阅读笔记

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

     1 class Grandparent {
     2 
     3     public Grandparent() {
     4         System.out.println("GrandParent Created.");
     5     }
     6 
     7     public Grandparent(String string) {
     8         System.out.println("GrandParent Created.String:" + string);
     9     }
    10 }
    11 
    12 class Parent extends Grandparent {
    13 
    14     public Parent() {
    15         //super("Hello.Grandparent.");
    16         System.out.println("Parent Created");
    17        // super("Hello.Grandparent.");
    18     }
    19 }
    20 
    21 class Child extends Parent {
    22 
    23     public Child() {
    24         System.out.println("Child Created");
    25     }
    26 }
    27 
    28 public class TestInherits {
    29 
    30     @SuppressWarnings("unused")
    31     public static void main(String args[]) {
    32         Child c = new Child();
    33     }
    34 }

      

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

    二、方法覆盖

     1 public class Fruit
     2 {
     3         
     4     public String toString()
     5     {
     6         return "Fruit toString.";
     7     }
     8 
     9     public static void main(String args[])
    10     {
    11         Fruit f=new Fruit();
    12         System.out.println("f="+f);
    13     //    System.out.println("f="+f.toString());
    14     }
    15 }

      

      

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    ovs 数据包的处理过程
    Docker常用命令
    java中的各种锁详细介绍
    Oracle中的一些基本操作
    Java连接MySQL8.0以上版本数据库方式
    关于Maven+Tomcat7下cannot be cast to javax.servlet.Servlet问题的解决办法
    冒泡排序及优化详解
    Java集合类的概述
    关于java中构造方法、实例初始化、静态初始化执行顺序
    git push 时 failed to push some refs 的解决方案
  • 原文地址:https://www.cnblogs.com/yifengyifeng/p/6047628.html
Copyright © 2011-2022 走看看