构造器

java 类和对象

倾然丶 夕夏残阳落幕 提交于 2019-12-27 17:53:03
1.对象 对象是事物存在的实体,通常又会将对象划分为两个部分,对象的属性和对象的行为 2.类 类就是一类事物的总称,如果将某个事物抽象为对象,那么类就是这个对象的总称 xx类-----实例化------->xx对象 类是封装对象的属性和行为的载体,对象则是类的实例。 3.面向对象程序的特点:封装,继承,多态 封装 封装是面向对象编程的核心思想,将对象的属性和行为封装起来,对使用者隐藏了数据的实现方式。 使用者只能通过对象的方法与对象数据进行交互,这样做的好处是当对象的数据方式发生改变时,只要仍然 是使用同样的方法来操作数据,则对其他的对象不会产生任何影响。 继承 有时候类与类存在一定的关联关系,常见的有:依赖(uses-a)、聚合(has-a)、继承(is-a)。 继承时is-a的关系,即当子类继承父类,子类就拥有了父类的属性和方法,而同时子类又能够去定义自己 特有的属性和方法,这样就能够复用父类的代码,缩短开发时间,提高系统性能。 多态 多态指的将父类对象应用于子类的特征,当父类中的某方法在子类中可能都有不同的实现,当用父类去实例化 子类并调用该方法时,只有在运行的时候才能知道调用的具体方法。 4.类的结构 public class Book { private String name; //成员变量 private String price;//成员变量 /** * 构造器:

数据结构和算法 – 8.链表

。_饼干妹妹 提交于 2019-12-26 21:58:06
8.1.数组存在的问题 在处理列表的时候数组是常用的数据结构。数组可以对所存储的数据项提供快速地存取访问,而且它很易于进行循环遍历操作。当然,数组已经是语言的一部分了,用户不需要使用额外的内存,也不需要花费因使用用户自定义的数据结构所需的处理时间。 然而正如所见,数组不是一种最佳的数据结构。在无序数组中查找一个数据项是很慢的,这是因为在找到要查找的元素之前需要尽可能地访问到数组内的每一个元素。有序(排序)数组对查找而言会更加高效一些,但是插入和删除操作还是很慢的,因为需要向前或向后移动元素来为插入留出空间,或者为删除移除空间。更别提在有序数组内还需要为插入元素查找到合适的位置了。 8.2.定义 链表是被称为节点的类对象的群集。每一个节点通过一个引用链接到列表内的后继节点上。节点包括存储数据的字段和节点引用的字段。到另外一个节点的引用被称为是链接。 数组:元素是通过位置(索引)进行引用 链表:元素是通过它们与数组其他元素的关系进行引用 大家会说“ Bread”跟在“ Milk”的后面,而不会说“ Bread”是在第二个位置上。遍历链表是从链表的起始节点一直到末尾节点。 还需要注意的一点就是对链表结尾的标记是通过指向空( null)值实现的。既然是在内存中处理类对象,所以就用空( null)对象来表示列表的末尾。 在许多链表的实现中通常会包含一个被称为“头节点

为什么要有无参构造方法和无参构造的原理

十年热恋 提交于 2019-12-26 19:16:27
下午跟着码项目的时候发现每一个构造器都输入了shift+alt+s了一个无参构造 诸如此类 就自己做了个实验 共有 GrandPa、Father和Son 3个类, 我现在在 main方法里 执行这条语句。Son son = new Son(); 控制台的输出结果如下: 由结果可知,一定不断的回溯到了Object,只不过是没有打印语句而已。若我们不指定调用父类的哪个构造方法。就会调用默认的无参构造方法,当然这个调用语句是在方法体的第一行。 如上上图所示,加不加 super()结果是一样的,因为默认有这一行。 (这时你可能会想为什么有时一定要加super,下面接着看) 2、那我把父类的无参构造方法去了还能回溯吗?当然可以,因为会默认有一个(没有输出语句的)。 把Father的无参构造方法注释掉,控制台输出如下: 我是爷爷的无参构造器 我是孩子的无参构造器 3、如果我的父类没有提供无参构造方法,但是提供了 有参构造方法,结果会如何? 子类直接出现编译错误,错误提示是: 在父亲类那里没有找到默认的构造器。 说明:如果父类没有提供默认的构造方法,而只是提供了有参构造方法,子类在继承时候,就会出错。 (解释什么时候一定要有super) 详细错误的原因解释是:编译器看到我们在Father类里写了有参构造法方法,它就会认为,我们不想让子类在回溯的时候走默认的无参构造方法这条路【super();

69道Spring面试题和答案

烈酒焚心 提交于 2019-12-26 18:41:35
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量: Spring 是轻量的,基本的版本大约2MB。 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器: Spring 包含并管理应用中对象的生命周期和配置。 MVC框架 :Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理: Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3. Spring由哪些模块组成

java反射详解和动态代理

筅森魡賤 提交于 2019-12-25 19:05:27
最近闲来无事,刚好看到以前的java反射笔记,这里整理一下,有不足之处还望指出;   在学习java反射机制之前,我们先提出这么一个问题:在Java中,能不能在运行时针对一个Java类,获取它的属性和方法呢?   答案是肯定的,java中解决这个问题就是使用的我们今天需要讲的java反射机制。 1.什么是java反射?   java提供一种在运行时动态的获取class的方法和属性以及参数的机制,这种机制就是反射机制。换言之,java可以加载一个在运行时才得知名称的class,并获得它的详细结构(包括权限,继承类等等)。 在JDK中提供API来实现这种机制,API就是reflection APIs。在下文我们将详细了解reflection APIs 。 2.Reflection API详解   java内部是怎么实现这种机制的呢?让我们来详细看看Reflection API。java反射相关的API都在java.lang.reflect包中。结构图如下:    member接口: 用于获取类的构造方法,字段和成员方法。       AccessibleObject 类 :是 Field、Method 和 Constructor 对象的基类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。(通俗解释一下就是获得了更高的使用权限);        Array

CLR via C# 方法 类型构造器

萝らか妹 提交于 2019-12-25 16:29:02
除了实例构造器,CLR还支持类型构造器(type constructor),也称为静态构造器(static constructor)、类构造器(class constructor)或者类型初始化器(type initializer)。类型构造器可用于接口(虽然C#编译器不允许)、引用类型和值类型。实例构造器的作用是设置类型的实例的初始状态。对应地,类型构造器的作用是设置类型的初始状态。类型默认没有定义类型构造器。如果定义,也只能定义一个。此外,类型构造器永远没有参数。 可以看出,定义类型构造器类似于定义无参实例构造器,区别在于必须标记为static。此外类型构造器总是私有的;C#自动把它们标记为private。事实上,如果在源代码中显式将类型构造器标记为private(或其他访问修饰符),C#编译器会提示消息: 之所以必须私有,是为了防止任何开发人员写的代码调用它,对它的调用总是由CLR负责。 //-- 类型构造器的调用比较麻烦。JIT编译器在编译一个方法时,会查看代码中都引用了哪些类型。任何一个类型定义了类型构造器,JIT编译器都会检查针对当前AppDomain,是否已经执行了这个类型构造器。如果构造器从未执行,JIT编译器会在它生成的本机(native)代码中添加对类型构造器的调用。如果类型构造器已经执行,JIT编译器就不添加对它的调用,因为它知道类型已经初始化好了。 现在

小程序开发,导航栏样式的学习平台

你说的曾经没有我的故事 提交于 2019-12-25 14:17:30
指南: 小程序宿主环境 程序与页面 app.json的pages字段,可以知道当前小程序的所有页面路径。 { "pages": ["pages/index/index", "pages/logs/logs"] } 这个配置说明在项目里定义了两个页面,字段的第一个页面是小程序的首页。 小程序启动后,app.js的APP实例,它里面的onLaunch的回调会被执行。 App({ onLaunch() { // 小程序启动之后 触发 } }) 看看小程序的一个页面是怎么写的, 首先,.json文件配置生成一个界面,接着,装载这个页面的WXML和WXSS文件,最后装载js文件。 js文件是由页面构造器Page()生成,里面是各种对象,默认的是data对象和onLoad方法。 组件 通过写组件标签名显示组件。 在组件里写明属性传值,也可以写事件函数,来处理相关行为。 <map bindmarkertap="markertap" longitude="广州经度" latitude="广州纬度"></map> bindmarkertap就是一个事件,后面两个是属性。 API 微信小程序提供了很多内置的API。比如调用微信扫一扫功能, wx.scanCode({ success: (res) => { console.log(res) } }) 多数API的回调都是异步的,这句话其实我并不明白。

java核心技术10阅读(二)-面向对象编程2

为君一笑 提交于 2019-12-25 12:02:25
静态域Static 静态域被称为类域,它属于这个类,而不属于某个实例对象,是这个类所有实例的公有对象。 静态域常量以static+final来命名,它能作为实例对象的公有方法或者常量但是不能被修改,例如Math.PI。 静态域方法是 不能 调 用实例域对象但能调用静态变量的方法 ,以static为前缀。其实相当于静态方法没有隐式参数。例如Math.pow(x, y)。也可以将静态域的前缀省略而最好利用类名直接调用。 在下面2种情况下使用静态域方法: •一方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如: Math.pow) •一个方法只需要访问类的静态域(例如:Employee.getNextld) 利用静态工厂方法来生成不同风格的对象。 最常见的静态方法当然是main函数,每个类都可以包含一个main函数,可以用来测试不同的类做自测。 方法参数 java的参数总是按值调用,对象引用也是即使按值传递,传递的是指针的复制值。因此不能说java/javascript的对象引用时 引用调用 。C++ 有值调用和引用调用。引用 参数标有& 符号 。 对象构造 重载是多个重名的方法但是带有不同的参数类型。方法的前面包括 名字和参数类型 。 三种初始化数据域方法: 0:默认域初始化,假设没有对域初始化,则域内的数值、bool以及对象会被初始化成0\false\null。**tips

Java常见异常总结

非 Y 不嫁゛ 提交于 2019-12-25 11:07:29
转自: 牛奶、不加糖 http://www.cnblogs.com/ITtangtang/archive/2012/04/22/2465382.html 1. java.lang.NullPointerException(空指针异常)   调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针, 即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化, 依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)。 2. java.lang.ClassNotFoundException   指定的类不存在 这里主要考虑一下类的名称和路径是否正确即可,通常都是程序试图通过字符串来加载某个类时可能引发 异常 比如:调用Class.forName(); 或者调用ClassLoad的finaSystemClass();或者LoadClass(); 3. java.lang.NumberFormatException 字符串转换为数字异常 当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。

vue实例

混江龙づ霸主 提交于 2019-12-25 07:28:35
1、构造器 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模式 , Vue 的设计无疑受到了它的启发。因此在文档中经常会使用 vm 这个变量名表示 Vue 实例。 在实例化 Vue 时,需要传入一个 选项对象 ,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。全部的选项可以在 API 文档 中查看。 可以扩展 Vue 构造器,从而用预定义选项创建可复用的 组件构造器 : var MyComponent = Vue.extend({ // 扩展选项 }) // 所有的 `MyComponent` 实例都将以预定义的扩展选项被创建 var myComponentInstance = new MyComponent() 尽管可以命令式地创建扩展实例,不过在多数情况下建议将组件构造器注册为一个自定义元素,然后声明式地用在模板中。我们将在后面详细说明 组件系统 。现在你只需知道所有的 Vue.js 组件其实都是被扩展的 Vue 实例。 2、属性与方法 每个 Vue 实例都会 代理 其 data 对象里所有的属性: var data = { a: 1 } var vm = new Vue({ data: data }) vm.a === data.a // -