1、前期绑定 后期绑定

当子类向上转型为基类对象的时候,不知道原来是哪一个子对象,所以需要辨别,此时用到了绑定,来判定哪一个子对象。

前期绑定:运行程序之前就绑定。

后期绑定:Java中除了static方法和final方法(private方法属于final方法)之外,其他所有方法都属于后期绑定。

2、静态方法的子父类的覆写

3、静态变量与非静态变量 在和 main方法调用顺序问题

class Cha{private String s;Cha(String s){this.s = s;System.out.println("Cha s="+s);}
}
class Des{private String s;Des(String s){this.s = s;System.out.println("Des s="+s);}
}
class Living{private Cha c = new Cha("is living");private Des d = new Des("basic living");Living(){System.out.println("Living");}
}
class Animal extends Living{private Cha c = new Cha("is Animal");private Des d = new Des("basic Animal");Animal(){System.out.println("Animal");}
}
class Amphibian extends Animal{private Cha c = new Cha("is Amphibian");private Des d = new Des("basic Amphibian");Amphibian(){System.out.println("Amphibian");}
}
public class Frog extends Amphibian{private Cha c = new Cha("is Frog");private Des d = new Des("basic Frog");Frog(){System.out.println("Frog con");}public static void main(String[] args) {Frog f = new Frog();}
}
//out
Cha s=is living
Des s=basic living
Living
Cha s=is Animal
Des s=basic Animal
Animal
Cha s=is Amphibian
Des s=basic Amphibian
Amphibian
Cha s=is Frog
Des s=basic Frog
Frog con

执行顺序:静态成员变量(父或子) -> mian方法里面new本类 -> 非静态成员变量(父类)-> 构造方法(父类) -> 非静态成员变量(子类)-> 构造方法(子类)。

4、父类构造函数中使用了被子类覆写的方法,会调用子类覆写的方法。若未在构造函数中调用覆写方法,则会使用父类方法。

不可利用向上转型调用子类新添加的方法,因为父类没有该方法。

class Glypn{void draw(){System.out.println("Glypn");}Glypn(){System.out.println("Glypn ..");draw();//正常情况下不会在构造函数中调用覆写方法System.out.println("Glypn ...");}
}
class Round extends Glypn{private int r = 1;Round(int r){this.r = r;System.out.println("Round .."+r);}void draw(){System.out.println("Round draw " +r);}
}
public class Poly {public static void main(String[] args) {new Round(2);}
}
//out
Glypn ..
Round draw 0
Glypn ...
Round ..2

5、继承和实现接口

若继承类A中和实现接口B有一模一样的方法,则子类C可以不用写该方法,但若不相同时,必须实现接口方法,且不能以有无返回值来判断方法是否相同,只能根据参数列表判断。

Java编程思想—第八九章相关推荐

  1. JAVA编程思想学习笔记——第一章 对象导论

    搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的 ...

  2. Java编程思想学习-《第二章 一切都是对象》

    第2章 一切都是对象 尽管Java是基于C++的,但是相比之下,Java是一种更"纯粹"的面向对象程序设计语言.Java语言假设我们只进行面向对象的程序设计.也就是说,在开始用Ja ...

  3. Java编程思想 第十五章:泛型

    1. 泛型 "泛型"意思就是适用于许多类型. 使用泛型的目的之一: 指定容器持有什么类型,让编译器确保正确性,而不是在运行期发现错误. 这个容器可以看成是有其他类型对象作为成员的类 ...

  4. Java编程思想读书笔记——第九章:接口

    第九章 接口 接口和实现类 抽象类是介于普通的类和接口之间的中庸之道,抽象类也是一种重要的工具,你不可能总是使用纯接口 9.1 抽象类和抽象方法 抽象方法声明的语法: abstract void f( ...

  5. 《java编程思想》第七章 复用类

    组合:在新的类中产生现有类的对象.只是复用了现有程序代码的功能,而非形式. 继承:按照现有类的类型来创建新类,无需改变现有类的形式.采用现有类(基类)的形式,并在其中添加新代码. 都是利用现有类型生成 ...

  6. 《Unix编程艺术》 八九章读书笔记

    8 微型语言: 寻找歌唱的乐符 从好的符号体味出的巧妙和启发,就算身边的老师也不过如此. 对软件错误模式进行大量的研究得出的一个最一致的结论时,程序员每百行代码的出错率和所使用的编程语言在很大程度上无 ...

  7. Java编程思想 4th 第5章 初始化与清理

    cnblogs原创 转载于:https://www.cnblogs.com/pluse/p/7358062.html

  8. 《JAVA编程思想》学习笔记:第8章(多态)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  9. 《JAVA编程思想》学习笔记:第16章(数组)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

最新文章

  1. 利用dom4j将实体类转换为对应的xml报文
  2. ajax在项目中怎么使用,我如何添加项目在sql中使用jQuery(ajax)通过web服务
  3. 封装,抽象,继承,多态
  4. python timestamp和datetime之间的转换_python – 在datetime,Timestamp和datetime64之间转换
  5. 网易云信亮相LiveVideoStackCon2020,分享RTC中AI音频算法产品化经验
  6. Apache RocketMQ部署文档
  7. 推荐几个电子/嵌入式方向的公众号
  8. c语言中 数组 左移,如何将一个数组的元素循环左移?
  9. C# Winform使用Windows Media Player播放多媒体整理
  10. 代理设置。 安卓工作室配置用http代理。gradle可能需要这些http代理设置去访问互联网。例如下载依赖。 你想要复制ide的代理配置到这个项目的gradle属性文件吗?...
  11. PHP23 AJAX分页
  12. 点击添加一行_微信接龙表格操作方法图文教程,以及微信聊天框怎么另起一行...
  13. ssm教师教学评价系统(ssm教学评价系统教师ssm学生评教系统)JSP网上评教系统jsp评教系统
  14. Microsoft Word 2010 - 符号 / 特殊符号
  15. 《深度学习》读后感作文3100字
  16. 苹果新款MacBook Pro 2021:M1X处理器+16G内存
  17. DARTS 可微 架构搜索
  18. 【集体智慧编程】第二章、提供推荐
  19. java 多个pdf文件合并,解决删除提示文件被占用
  20. 人脸检测和行人检测2:YOLOv5实现人脸检测和行人检测(含数据集和训练代码)

热门文章

  1. JAVA中CLASS.FORNAME的含义
  2. .net分页控件webdiyer:AspNetPager
  3. Django 数据库建表的时候 No migrations to apply原因出现和解决
  4. SpringMVC自学日志02(初识SpringMVC)
  5. Oracle 日常开发记录
  6. Java中不常见的关键字 / 修饰符(volatile , native , transient)
  7. oracle数据库初始化参数分类,oracle初始化参数设置
  8. 【POJ 1151】Atlantis
  9. bootstrap-fileinput 简单使用
  10. Linux内核基础--事件通知链(notifier chain)【转】