array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Java SE学习总结 Day (10) - 爱码网

Day 10开篇:

        "今天java基础主要学习了面向对象的构造方法的概念,特征,作用,分类,注意事项,JavaBean;代码块,继承的概念,特点,好处,缺点,this和super的区别,继承的注意的问题,构造方法的关系,extends关键字等。 "


Java SE学习总结 Day (10)
知识点反馈:

今天的知识点总结思维导图

 
 
Java SE学习总结 Day (10)
 
一. 构造方法
1. 构造方法的特征:
(1)他的名字和类名必须完全一致
(2)构造方法没有返回值,连void也不存在
(3)不能被任何的修饰符进行修饰(权限修饰符除外)
(4)不能有return语句返回值
2. 构造方法的作用:
创建对象;给对象进行初始化
例:String name = null;
这个等于null,也有赋值的过程,这个过程是谁完成呢?
构造器完成的,这个过程被称之为隐式赋值
3. 构造器的分类:
(1)隐式无参构造器(系统默认提供)
(2)显式定义一个或多个构造器(无参、有参,自己提供)
4. 构造器的注意事项:
(1) Java语言中,每个类都至少有一个构造器
(2) 默认构造器的修饰符与所属类的修饰符一致
(3) 一旦显式定义了构造器,则系统不再提供默认构造器(一般我们即使提供了带参,一般也会自己手动的写上一个无参)
(4) 一个类可以创建多个重载的构造器(构造器的名字既然和类名一致,那么是不是意味着,同一个类当中只能出现一个名字的构造;这种情况其实就会造成构造重载:当一个构造方法无法满足我们的需求的时候,定义多个同名的构造方法。就是所谓的构造重载)。
(5) 父类的构造器不可被子类继承
(6) 所有的对象被实例,一定会去调用该类的构造方法
5. JavaBean:
(1) 定义:JavaBean其实就是一个Java的可重用组件
(2) JavaBean必须具备特征:
<1>具备封装思想
<2>类必须是公共
<3>必须提供一个无参构造(必须是公共),如果你对一个构造器进行了私有化,那么也就意味其他人无法通过这个构造器创建对象
 
 
二. 代码块
1. 定义:在Java语言当中,用{}包裹起来的被称之为代码块。
2. 代码块的分类:
(1)局部代码块:位置是在方法的范围,作用是为了限制某一段代码只能在限制的区域生效,其实就是限制作用范围。
        举例:
            mian(){
                {
                    //code
                }
            }
(2)构造代码块:位置是在方法的范围,作用是为了限制某一段代码只能在限制的区域生效,其实就是限制作用范围
                  当你的这个类,存在多个构造方法被重载,且每一个重载有一个一模一样的代码的时候,可以将这些代码单独的提取出来,
                  放到构造代码块当中,减少了代码的编码量。
        举例:
            class Demo{
                {
                    //code
                }
            }
(3)静态代码块:位置是类的成员位置,这个代码块使用static进行修饰。
                  他主要的作用是,一般是类的数据进行初始化、一些代码片段只需要被执行一次的时候、当某一些代码片段是需要被共享的时候
        举例:
            class Demo{
                static{
                    //code
                }
            }
3. 执行顺序:静态的代码块 > 构造代码块  > 构造方法
4. 执行特点:静态代码块只会被执行一次;构造代码块、构造方法每一次实例化对象都会执行。
 
 
三. 继承
1. 定义:把多个类当中,相同的属性和行为进行单独提取到一个独立类
2. 如何实现继承?
java提供了一个关键字:extends
3. 格式: class 子类名 extends 父类名{}
4. 继承的好处:
(1)避免了代码的冗余
(2)提高了代码复用
(3)提高了代码的维护性
(4)让每个类之间产生了联系,是多态必学的
5. 继承的弊端:
其实就是他的"让每个类之间产生了联系,是多态必学的",高内聚(就是自己独立完成工作能力),低耦合(类和类之间的联系)
"牵一发而动全身"
6. 继承的特点:
(1)java当中的继承只支持单根继承,不支持多根继承
     例如:class Son extends Father,GrandFather{} //错误
(2)不过java支持多层继承
      例如:class Father extends GrandFather{}
            class Son extends Father{}
7. 继承的注意的问题:
(1)子类无法访问父类的私有属性和私有方法
(2)子类无法继承父类的构造,但是可以通过一些手段进行访问(super)
(3)不要仅为了获取其他类中某个功能而去继承
例如; class A{
                 public void show1(){}
                 public void show2(){}
                 public void show3(){}
 
            }
 
            class B extends A{
                //在编写B类的时候,你发现A类有一个show2方法是可以自己用到的,所以你应该考虑使用继承了
                //如果你使用了继承,你要考虑show1和show3要不要用?
                //如果不要用,那么这个两个方法同样会被继承下来(拷贝到你类B的内存当中)
            }
8. 继承,在什么时候使用?
继承的前提一定是要实现一个is-a的原则(B是A的某一种)
假设法:如果有一个A/B类,只有B类是A类的某一种,或者A类下面能够兼容B类就可以使用继承。
9. 成员变量查找的顺序问题:
(1)a.子类的成员变量和父类的成员变量名字冲突的时候
            1.先去局部访问去选择,如果就有执行
            2.再去本类的成员位置去寻找,有就执行
            3.本类仍然不存在,则去父类的成员变量去选择
            4.父类依旧不存在,就去父类的父类的去选择,到了顶层父类仍然不存在,则报错。
(2)不行,我偏偏要访问父类的数据
            1.访问局部变量,直接写变量名
            2.访问成员变量,写上this
            3.访问父类变量,如果命名冲突,可以参考this一样的道理
                访问的是父类的空间:super
10. this和super的区别:
this:本类对象的应用,哪个对象进行调用即代表哪个对象的堆空间
super:代表的是父类存储空间的标识(就是父类的地址值),子类就可以通过这个地址值去访问父类空间
 
11. this和super操作:
(1)调用成员方法:
                    this.成员方法 调用的本类的方法
                    super.成员方法 调用的是父类的成员方法
(2)调用成员变量:
                    this.成员变量 调用的本类的成员变量
                    super.成员变量 用的是父类的成员变量
(3)调用构造方法:
                    this.(...) 调用本类构造,但是this必须是第一句,而且只能是构造方法里面
                    super(...) 调研是父类构造,但是super必须第一句,而且只能是在构造方法里面
                    注意:this和super不能同时存在。因为避免同一个被子类和父类反复初始化
12. 构造方法的关系:
(1)子类当中所有的构造方法,默认第一句都是super(你不写,默认访问父类无参)
(2)为什么?因为子类是不是要继承父类的数据? 这个父类的数据谁来初始化?是不是父类的自己的构造方法。
               所以子类在自己初始化之前,是不是想要解决好父类初始化的问题,不然你怎么使用父类的数据呢?
 
                一般父类一定要提供一个无参构造,因为子类默认访问父类无法,否则子类无法实例。
13. extends关键字:
(1)Java中使用extends关键字实现类的集成机制
(2)通过继承子类自动拥有了基类(superclass)的所有成员(成员变量和成员方法)
  (3)Java只支持单继承
  (4)一个子类只能有一个基类,一个基类可以派生出多个子类

Java SE学习总结 Day (10)

 

相关文章: