构造器

C#基础之方法和参数

蹲街弑〆低调 提交于 2019-12-19 05:24:35
接上一篇 《C#基础之类型和成员基础以及常量、字段、属性》 实例方法、静态方法 C#中的方法分为两类,一种是属于对象(类型的实例)的,称之为实例方法,另一种是属于类型的,称之为静态方法(用static关键字定义)。大家都是做开发的,这两个也没啥好说的。 唯一的建议就是:你的静态方法最好是线程安全的(这点是说起容易做起难啊……)。 构造器(构造函数) 构造器是一种特殊的方法,CLR中的构造器分为两种:一种是实例构造器;另一种是类型构造器。和其他方法不同,构造器不能被继承,所以在构造器前应用virtual/new/override/sealed和abstract是没有意义的,同时构造器也不能有返回值。 实例构造器 用来初始化类型的实例(也就是对象)的初始状态。 对于引用类型,如果我们没有显式定义实例构造器,C#编译器默认会生成一个无参实例构造器,这个构造器什么也不做,只是简单调用一下父类的无参实例构造器。这里应该意识到, 如果我们定义的类的基类没有定义无参构造器,那么我们的派生类就必须显式调用一个基类构造器 。 class MyBase { public MyBase(string name) { } } class MyClass : MyBase { } 上面的代码会报“MyBase不包含采用0个参数的构造函数”的错误,必须显式调用一个基类的构造器: class MyBase {

Java面向对象基础

空扰寡人 提交于 2019-12-18 21:01:10
面向过程和面向对象 面向过程(Procedure Oriented)和面向对象(Object Oriented,OO)都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。 两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为 面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。 面向对象和面向过程的总结 都是解决问题的 思维方式 ,都是代码组织的方式。 解决 简单 问题可以使用 面向过程 解决 复杂 问题: 宏观上使用面向对象把握,微观处理上仍然是面向过程。 面向对象思考方式 遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定类的属性和方法,确定类之间的关系。 比喻: 一个经典的比喻:面向对象是盖浇饭、面向过程是蛋炒饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。 对象的进化史(数据管理和企业管理共通之处) 数据无管理时代 最初的计算机语言只有基本变量(类似我们学习的基本数据类型),用来保存数据。那时候面对的数据非常简单,只需要几个变量即可搞定;这个时候不涉及“数据管理”的问题。同理,就像在企业最初发展阶段只有几个人,不涉及管理问题,大家闷头做事就OK了。

静态构造器(static constructor)

混江龙づ霸主 提交于 2019-12-18 18:36:52
1、定义: 静态构造函数是实现对一个类进行初始化的方法成员. 它一般用于对静态数据的初始化. 静态构造函数不能有参数,不能有修饰符而且不能被调用,当类被加载时,类的静态构造函数自动被调用. 2、特点: 在一个程序的执行过程中,静态构造器最多只执行一次. 3、执行顺序: 静态构造器在任何类的静态成员被 引用 之前执行.  静态构造器在任何类的实例变量被分配之前执行. 静态构造器在类的静态成员初始化之后执行.或者说编译器会将静态成员初始化语句转换成赋值语句放在静态构造器执行的最开始. 4、实例: class Program { static void Main(string[] args) { Console.WriteLine("静态变量值 = " + Person.time); Person p1 = new Person(); Thread.Sleep(10); Person p2 = new Person(); Console.ReadKey(); } } class Person { public static int time = DateTime.Now.Millisecond; static Person() { Thread.Sleep(10); // 防止电脑运行太快,看不出效果 Console.WriteLine("静态构造器 = " + DateTime.Now

java8--面向对象 上(疯狂java讲义3) 复习笔记

限于喜欢 提交于 2019-12-18 09:53:45
1、初始化块总在构造器执行之前被调用 2、静态初始化块用于初始化类,在类初始化阶段被执行 3、如果继承树里的某个类要被初始化时,系统将会同时初始化该类的所有父类 4、一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器(比如默认的构造器将失效) 5、修饰类或者方法的修饰符,final和abstract 只能选择其一,final不可改变,abstract只能由后代实现 6、一个字节长度为8位,char类型为2个字节,char类型使用单引号括起来,如果把一个0~65535范围内的int整数赋给char类型,系统会自动把这个int类型 当成char类型来对待。 char t1=97;//可以赋予0到65535之间,输出相应字符,如果赋予65536,则报错。 System.out.println(t1);//输出 a char t2= 'a'; System.out.println(t2);//a System.out.println((int)t2);//97 char t3='你'; System.out.println(t3);//你 System.out.println((int)t3);//20320 7、构造器不能声明返回值类型(包括void),如果声明了,那么编译不会报错,但是 Java 会把这个构造器当成一个方法来处理–它就不再是一个构造器。 8

Spring 之通过 XML 装配 bean

…衆ロ難τιáo~ 提交于 2019-12-18 03:33:01
1、关于 使用传统标签还是 c- p- 命名空间定义的标签, 我的观点是能用 c- p- 命名空间定义的标签 就不用 传统标签 (这样会比较简洁。。。 2、 强依赖 使用构造器注入, 可选性依赖 使用属性注入。 【 bean 的初始化】 <? xml version="1.0" encoding="UTF-8" ?> < beans xmlns ="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">【声明简单的 bean 】 <!-- 创建一个简单的 bean(默认构造器),自动化命名 ID 默认为 soundsystem.SgtPeppers#0 --> <bean class="soundsystem.SgtPeppers" /> <!-- 自定义 ID 非必要不使用 --> <bean

spring入门常见的问题及解决办法

隐身守侯 提交于 2019-12-18 03:24:55
在学习spring过程中遇见了种种不同的异常错误,这里做了一下总结,希望遇见类似错误的同学们共勉一下。 1. 错误一 Error creating bean with name 'helloServiceImpl' defined in class path resource [spring-service.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'helloDao' of bean class [www.csdn.spring.service.impl.HelloServiceImpl]: Bean property 'helloDao' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property

Scala类和对象

▼魔方 西西 提交于 2019-12-17 23:53:55
1.面向对象 Scala的类与java、C++的一些比起来更简洁,速度更快 对象:使用object关键字修饰的 类:使用class关键字修饰的new Person()实例对象 new类:类的实例(对象) 1.1.单例对象 (1)scala中没有静态方法和静态字段,没有static (2) java中,没有关键字修饰的方法,只能用new class()来修饰方法 (3)队友一个class来说,所有的方法和成员变量在市里被new出来之前都无法访问 (4)虽然在class中的定义main方法,可是并没有什么用,按时可以用object达到同样的目的 (5)用object修饰的对象是单例的,成为单例对象,静态对象 (6)单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。注意:1.单例类只能有一个实例 2.单例类必须自己按创建自己的唯一实例 3.单例类必须给其他对象提供这一实例 代码: object SIngeDemo { var name="娜娜" def eat():Unit={ println(name+"是吃货!") } } object test{ def main(args: Array[String]): Unit = { SIngeDemo.eat() } } 1,2

JS中函数的调用和this的值

谁说胖子不能爱 提交于 2019-12-17 19:10:51
调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形式参数,每个函数还接收两个附加的参数: this 和 arguments 。 参数this在面向对象编程中非常重要,他的值取决于调用的模式。 在JS中一共有4中调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。 方法调用模式   当一个函数被保存为对象的一个属性时,我们称为一个方法。当一个方法被调用时,this被绑定到该对象。 var myObject = { value: 0, increment: function(inc){ this.value += typeof inc === "number" ? inc : 1; } }; myObject.increment(); console.log(myObject.value); // 1 myObject.increment(3); console.log(myObject.value); // 4 函数调用模式   当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用。以此模式调用函数时,this被绑定到全局对象。有一个很容易的解决方案:如果该方法定义一个变量并给它赋值 为this,那么内部函数就可以通过那个变量访问到this。 var value = 122;

《Java编程思想》第十二章 通过异常处理错误

一世执手 提交于 2019-12-17 17:02:25
java的基本理念是“结构不佳的代码不能运行” 。 发现错误的理想实际时在编译阶段,也就是在你试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接收者-该接收者知道如何正确处理这个问题。 改进的错误恢复机制是提供代码健壮性的最强有力的方式。Java使用异常来提供一致性错误报告模型,使得构件能够与客户端代码可靠地沟通问题。 基本异常 异常情形是指组织当前方法或作用域继续执行下去的问题。把异常情形与普通问题向区分很重要,所谓的普通问题是指,在当前环境下能得到足够的信息,总能处理这个错误。而对于异常情形,就不能继续下去了,因为当前环境下无法获得必要的信息来解决问题。你所能做的就是从当前环境跳出,并且把问题提交给上一级环境。这就是抛出异常时所发生的事情。 当抛出异常后,有几件事情会随之发生。首先,同Java中其他对象的创建一样,将使用new在堆上创建异常对象,然后,当前的执行路劲被终止,并且从当前环境中弹出对异常对象的引用,此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序,它的任务时将程序从错误状态中恢复,以使程序能要么换一种方式运行,要么继续运行下去。抛出异常,看起来像这样: if(t == null) throw new

Java相关知识2

♀尐吖头ヾ 提交于 2019-12-17 05:32:00
11、是否可以从一个static方法内部发出对非static方法的调用? 不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。 12、Integer与int的区别 int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。 例如:要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。 在Hibernate中,如果将OID定义为Integer类型