《Java编程思想》笔记 第七章 复用类
1.组合
- 将其他类的对象引用置于新的类中。
3.继承 extends
从已知的一个类中派生出新的一个类,叫子类。子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为。
- 继承在内存中其实是先复制一个父类然后添加自己的字段方法。
- 子类中调用继承下来的方法也不需要基类对象引用。继承相当于对基类的一个扩展,因为基类有的它都有,再额外添加了一些域和方法(或覆写方法)而已。
- 子类不能直接访问父类的private字段方法.但是,如果子类继承了访问父类私有字段的公共或受保护方法,则子类也可以通过继承的方法访问父类私有字段方法。
4.super
4.1 super.f() 调用基类的f()方法。
4.2 构造器中的super(args) 调用基类构造器,且只能在第一行。
4.3 由于构造器被重载后默认构造器不存在,且创建子类对象时一定会调用基类构造器,如果不用super则调用基类默认构造器,而基类构造器构造器被重载,故会报错,所以基类构造器被重载后子类要在构造器中显示用super调用基类构造器。
5.何时使用组合或继承
- 组合:新类中实现现有类功能,而非现有类接口。
- 继承:开发一个现有类的特殊版本。
6.final
- final 不可改变数据。 final 引用 不可指向另一对象,这对数组也同样适用,数组也是对象,但对象内容可以改变,不能改变的时引用指向。
- final 参数 : 参数为引用则无法改变指向,参数为基本数据类型则无法改变值。
- final 方法 可被继承但子类无法覆写,所有private方法都是隐式的final.(private 方法非所在类无法访问,final方法不一定 看它是什么权限)
- final 类 无子类,不可继承。
7. main方法
8.1 可以在类中设置main方法,这样便于进行单元测试单独运行这个类。
8.2 除构造器外,其他方法都需要对象调用才能执行,main方法也如此,创建对象并不会调用main方法,只有执行 java 类 命令时main方法才会被调用。
8.3 单独的一个没有main方法的类是无法运行的,main方法时程序运行的入口。
知识点:
- 每一个非基本类的对象都有一个 toString() (从Object继承而来)方法,打印此对象引用就会输出该方法的返回值。
- 默认构造器权限与类权限相同,没写权限的构造器为包访问权限。
《Java编程思想》笔记 第七章 复用类的更多相关文章
- [Java编程思想] 第七章 复用类
第七章 复用类 第一种方法非常直观:只需在新的类中产生现有类的对象(组合). 第二种方法更细致一些:它按照现有类的类型来创建新类(继承). 7.1 组合语法 只需将对象引用置于新类中即可. cla ...
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- java编程思想笔记(1)
java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自 ...
- #Java编程思想笔记(一)——static
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...
- 《Java编程思想》第一二章
前段时间一直通过网络教程学习Java基础,把面向对象部分学完之后本来打算继续深入学习,但是感觉自己操之过急了,基础根本不够扎实,所以入手了一本<Java编程思想>,希望先把基础打好,再深入 ...
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
- 2.1(java编程思想笔记)位移操作
java位移操作主要有两种: 有符号位移:有符号位移会保留原有数字正负性,即正数依然是正数,负数依然是负数. 有符号位左移时,低位补0. 有符号右移时:当数字为正数,高位补0.当数字为负时高位补1. ...
- Java编程思想 4th 第1章 对象导论
所有编程语言都提供抽象机制. 面向对象编程似乎是一种很好的编程思想和方式,面向对象编程中的对象简洁描述是:对象具有状态.行为和标识.状态指的是数据存储,存储的数据能反应状态:行为指的是方法,方法表示对 ...
- 7.JAVA编程思想笔记隐藏实施过程
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040237 "进行面向对象的设计时,一项主要的考虑是:怎样将发生变 ...
随机推荐
- 有向图的强连通分量——kosaraju算法
一.前人种树 博客:Kosaraju算法解析: 求解图的强连通分量
- sql between and 边界问题
1.不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的.需要自己测试 2.一般情况下.SQL Server中 between and是包括边界值的,not between不包括边界 ...
- php实现base64图片上传方式实例代码
<?php /** * base64图片上传 * @param $base64_img * @return array */ header("content-type:text/htm ...
- c# 调用 matlab 引发初始化错误 异常
1. 除了matlab 编译的DLL 意外还需要引用 MWArray.dll 这个dill 在安装了 MCRInstaller.exe(matlab运行环境之后就会有了): 2. 最重要的一点.ne ...
- 批处理之SET命令
除了 下面分别介绍: 表示第二个字符到倒数第三个字符的值
- 左侧导航条+中间显示内容+右侧菜单配置,Bootstrap+AdminLTE+Jquery
1.最近做个导航页面,找了一大堆UI,最终选了AdminLTE,这个UI也是以bootstrap为基础,简单实用,中间内容用jquery的load加载,简单暴力,非常适合快速开发. 2.效果图如下: ...
- 【题解】NOI2009管道取珠
又是艰难想题的一晚,又是做不出来的一题 (:д:) 好想哭啊…… 这题最关键的一点还是提供一种全新的想法.看到平方和这种东西,真的不好dp.然而我一直陷在化式子的泥潭中出不来.平方能够联想到什么?原本 ...
- [Leetcode] remove element 删除元素
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- JavaScript的lazyload延迟加载是如何实现的
懒加载技术(简称lazyload)并不是新技术, 它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页,淘宝 ...
- JavaScript渐变效果的实现
鼠标移上去透明度渐渐增加,鼠标移出,透明度渐渐减小. 关键代码: view source print? 1 var speed = 0; 2 if(target>obj.alpha){ 3 ...