数组对象工具的建立(重要的是这种思想)

主函数是静态的,主函数需要调用的也需要static。

当有2个.java文件时,先编译含有函数功能的.java文件,再编译含主函数的.java文件。(因为主函数中要用到该函数)

Question:编译含main的.java文件,会出现2个.class文件?

其实系统已经帮你做过来了这个事情。(java编译器发现该类中用到了其他类,会去classpath或者.(当前目录)下去找,若没有仍然没有会去和这个类名相同的.java文件,找到后再对其进行编译。)

   有些类中只提供了工具和方法,一个非静态方法都没有,全是静态的。那么就用static,不需要创建对象(也可以创建,就是有点多余,没有意思)那么干脆就不让你创建对象,可以在类中的构造函数私有化使用return语句(对象一创建就需要初始化)。

文档注释(这一集没有细看):

Javadoc(java安装目录下Bin文件下的一个工具)可以提取文档注释。

面向对象(单例设计模式)

设计模式:对问题行之有效的解决方式都记录下来,比较通用的东西。(对产生的问题优化的过程记录下来了)

单例设计模式:解决的问题:可以保证一个类在内存中的对象唯一性

需求分析:什么时候需要保证类在内存中的对象唯一性呢?就是想实现配置信息的共享操作(就是A对配置信息操作过后能保存,B对配置信息操作时和A初步对配置信息创建的对象不一样)。  解决方案:用全静态(生命周期过长,不能采纳这样的方法)。

如何保证对象的唯一性:

1. 不允许其他程序用new创建该类对象。

2. 在该类中创建一个本类实例

3. 对外提供一个方法,让其他程序可以获取该对象。

步骤(牛人已经想好了的办法):

1. 私有化该类构造函数。(让其无法初始化对象)

2. 通过new在本类中创建一个本类对象。

3. 定义一个公有的方法,将创建的对象返回。

Class Single{Static Single s=new Single(); //步骤2 类名调用的前提Private Single()   //步骤1{}Public static Single getInstance() 类名调用的前提{Return s;   //步骤3}}Class SingleDemo{Public static void main(String[] args){New Single().getInstance();(无法new了,人家已经私有化了。我们是不能创建对象,可以考虑类名调用)Single ss=Single.getInstance();//这样我们就拿到了这个类的实例。Single ss=Single.s;//右边因为是静态变量,可以直接引用。这样做虽然可以用,但是不可控。用上面的可以给获取实例加入一些条件,往实参里面传入参数,符合就给你用,不符合就不让你用。有了方法就有了可控的可能,例如可以在方法中加入if。
 }}

可以测试:

Single s1=Single.getInstance();Single s2=Single.getInstance();Sop(s1==s2); //测试结果为真,可以保证唯一性。

内存图解:

 

 

单例设计模式(懒汉式)

 Class Single  //类一加载,对象就已经存在了。饿汉式(开发多用这个,懒汉式被多线程并发访问时,有可能不能保证对象的唯一性,存在安全隐患)用单例的模式就是为了获取你对象的。{Static Single s=new Single(); //步骤2 类名调用的前提Private Single()   //步骤1{}Public static Single getInstance() 类名调用的前提{Return s;   //步骤3}}

 饿汉式

Class Single2 //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象//延迟加载形式(面试多考这个)懒汉式{Private static Single2 s=null;Private Single2(){}Private static Single2 getInstance(){If(s==null)S=new Single2();Return s;}}

继承

面向对象的三大属性:(封装、继承、多态)

父类(基类、超类

继承好处:1.提高代码的复用性

2. 类与类之间产生关系,给多态产生前提。(没有继承就没有多态。)

继承就是向上不断抽取共性的过程。

单继承与多继承

Java中支持单继承,不直接支持多继承,但对C++中的多继承进行改良。

单继承(一个子类只能有一个直接父类)

多继承(一个子类中有多个直接父类,java中对其进行改良了) 因为当2个父类中有2个相同的方法时,子类中调用时不知道该调用哪一个。但是java支持多重继承。

当要使用一个继承体系时:

1. 查看该体系中的顶层类,了解该体系的基本功能

2. 创建体系最子类对象,完成功能的使用

在java中多继承是通过“多实现”来实现的。

定义继承

什么时候定义继承?  存在着所属关系的时候(xxx是yyy中的一种),就定义继承。

子类中成员变量的特点:

Class Fu{Int num=4;}Class Zi extends Fu{Int num=5;Void show(){Sop(num+”...”+num);}}Class ExtendsDemo2{Public static void main(String[] args){Zi z=new Zi();Z.show();}}

打印结果为:5...5(自己本空间有就不去父类找)跟我猜测的结果一样

但是并不是覆盖了。但是怎么去操作父类中的num呢?

当本类的成员和局部变量重名用this区分,类似的,当子类中的成员变量同名用super来区分。This和super的用法很相似 。

This:代表了一个本类对象的引用

Super:代表了一个父类空间。

子父类内存图解(了解即可,开发中用的很少,父类有的一般子类不会重新写,一般拿来直接用即可,而且通常情况下num均是私有的,直接使用setNumber方法和getNumber方法即可):

子类不能直接访问父类私有内容。但是可以通过super.getNumber()可以访问。(但是面试常见

子父类成员函数特点:

但是特殊情况,子类和父类中成员函数一致时。会运行子类函数,类似于“覆盖”,但是不属于覆盖,这是函数在子父类中的特性(函数有2个特性:1.重载。同一个类中2.覆盖:子类中,覆盖也称之为重写)。直接运行自己的成员函数即可:

覆盖的前提:函数声明必须得一致,而重载不区分函数返回值类型。

覆盖注意事项:

1. 子类覆盖父类方法,子类权限必须要大于等于父类权限。(public、privatae以及默认权限)

2. 当权限相同时,若父类的方法为static时,子类不能对其覆盖。或者子类单方为static也不行,只有当双方都为static才可以覆盖。(这种情况很少见,等学了多态就清楚原因

什么时候使用覆盖操作?

不建议对源代码进行直接修改,可以再搞一个类。当对一个类进行子类的拓展时,子类需要保留父类的功能声明,但是要定义子类中该功能的特有功能,就要用覆盖操作来完成。

JAVA_Lesson8(传智播客笔记之继承、单例设计模式懒汉式、饿汉式)相关推荐

  1. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...

    封装,继承,多态 隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写 -**************************************************** ...

  2. JAVA_Lesson14(传智播客笔记之多线程)

    多线程间通信-示例 之间是很多线程都在执行同一项任务,但是现在他们处理的任务不同(处理的还是同一资源). 线程间通信-等待唤醒机制(握手机制) 应该有个判断里面是否有资源的标记flag,判断是否有资源 ...

  3. photoshop基础教程视频-贺叶铭-传智播客-笔记

    界面构成 1.菜单栏 2.工具箱 3.工具属性栏 4.悬浮面板 5.画布 ctrl+n 新建对话框 (新建画布) 画布200*200大小,是指以毫米为单位,当不说单位,默认是毫米. 打开对话框:ctr ...

  4. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十五讲:HTML教程笔记

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十五讲:HTML教程笔记 摘要:通过前节<第十三讲:盒子的定位实例>学习了网站建设中的DIV+CSS中实例综合应用介绍.本节对HTML试题笔记进 ...

  5. 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(2015年10月25日23:28:50)

    day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定是桌面) 用DOS删除的文件不可以在回收站恢复 ...

  6. php从入门到精通19天笔记,传智播客-PHP从入门到精通(19天)-video

    教程名称:传智播客-PHP从入门到精通(19天)-video 教程目录:├PHP传智社区学习资源.zip├下载必看 .txt├│  ├10目录访问权限(包括分布式权限).wmv│  ├11多站点配置. ...

  7. 【传智播客】Libevent学习笔记(三):事件循环

    目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. event_base_l ...

  8. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装、继承、多态

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装.继承.多态 封装就是把抽象出的数据和对数据的操作封装在一起,通过public.  protected和private进行修饰.继承可以 ...

  9. 传智oracle,传智播客Oracle笔记

    Oracle笔记 oracle 传智播客_ORACLE经典视频教程 笔记(2008-09-09 15:32:34) 标签:it 分类:Oracle 1.3个默认用户 sys chang_on_inst ...

最新文章

  1. Error in x$e : $ operator is invalid for atomic vectors
  2. oracle中forall in,oracle10g的forall功能加强
  3. windows 启动停止 java进程
  4. 简单的makefile模板
  5. 【bzoj1146】 [CTSC2008]网络管理Network【树链剖分+树套树+二分 线段树套Treap】
  6. JavaScript文档对象模型DOM节点操作之父节点和子节点(2)
  7. wince 开发_正运动技术运动控制卡应用开发教程之Python
  8. 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
  9. c# oracle 中文列名,sql中中文列名
  10. java-net-php-python-jsp固定资产管理系统计算机毕业设计程序
  11. 国际能源署: 分散式系统是穷乡能源普及最具经济效益的解方
  12. 光电式液位传感器和电容式液位传感器的区别
  13. 【Go】解析X509
  14. prometheus 配置服务器监控、服务监控、容器中服务监控与告警
  15. Arnold材质节点篇-摄像机
  16. 华为nova3i 计算机在哪里,华为nova3i常见问题汇总,你想了解的都在这里
  17. Linux26期 6月21日
  18. 19.Atomic系列之LongAdder的底层原理(分段锁提升并发性能)
  19. PHP高级工程面试题汇总(2018.05)
  20. 使用dd命令制作U盘启动盘

热门文章

  1. 计算机思维与音乐有什么关系,音乐与创造性思维
  2. 在windows server2008中安装并管理mysql
  3. 21级数据结构与算法实验6——图论
  4. C语言用指针写一个投票程序,投票系统设计,C语言编写投票及排序系统(框架)...
  5. acro autoExpandParent在Tree组件内不生效
  6. 等级保护5个级别详细说明-行云管家
  7. 你用过这5个谷歌浏览器的插件吗?
  8. 基于ssm的流浪猫狗救助系统(springmvc spring mybatis mysql jsp)1002
  9. 配置 Docker 镜像加速 -小白实操记录
  10. 企业支付宝,登录限制,大额三年,不可用余额,支付关闭,