构造器

spring的依赖注入

五迷三道 提交于 2020-01-26 23:46:14
  在使用Spring对项目进行管理时,核心功能便是IOC(控制反转)和DI(依赖注入)。使用IOC来控制JavaBean的实例化,而属性的赋值则是通过DI来实现的。在Spring中依赖注入主要有三种,分别是:构造器注入、setter注入和接口注入。除了这三种注入方式还有工厂方法注入。    一、构造器注入:JavaBean包含有参构造器      在xml文件中配置如下:          二、setter函数注入:属性必须有setter函数,getter方法不是必须属性       三、静态工厂方法注入:需要有一个工厂类,类里有一个静态方法获取JavaBean对象。      在xml中配置如下,class属性指向工厂类,factory-method指向返回JavaBean的静态方法。如果静态方法有参数,则可以通过<constructor-arg>子标签设置参数,<property>子标签设置的是静态方法返回的对象的属性。在这个示例中使用的是Food对象的属性       四、实例工厂方法注入:需要初始化工厂方法      xml文件如下:facotry-bean属性指向工厂类的实例,<property name="taste">子标签的值会覆盖出入的参数值。       来源: https://www.cnblogs.com/yaqee/p/12235052.html

五、对象和类

瘦欲@ 提交于 2020-01-26 22:33:21
1、类(CLass) 类是构造对象的模板和蓝图。用类构造(construct)对象的过程称之为创建类的实例(instance) 通过扩展一个类来建立另一个类的过程称之为继承(inheritance) 1.1、对象 三个特性: 对象的行为是用可调用的方法定义的 对象的状态可能会随着时间而发生改变 每个对象都有一个唯一的身份(identity) 1.2、识别类的方法 首先你从设计类开始,然后往每个类中添加方法 识别类的简单规则:分析问题或者说类名一般用名词,而方法是动词或者动名词组合。 1.3、类之间的关系 依赖(dependence):如果一个类方法操纵另一个对象,则说明一个类依赖另一个类 [备注]:应该尽可能地将相互依赖的类减至最少,也就是让类之间的耦合度最小。 聚合(aggregation):类A的对象包含着类B的对象。 继承(inheritance):类A扩展类B,A不仅包含从类B继承的方法,还会拥有一些额外的功能。 其他关系 关系 箭头 继承 接口实现 依赖 聚合 关联 直接关联 2、使用预定义类 2.1 对象与对象的变量 使用构造器(constructor)构建一个新实例。构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该和类名相同,要想构造一个新的对象,就需要在构造器前面加上new操作符。 Date date = new Date(); // new Date

java内存分析

戏子无情 提交于 2020-01-26 15:55:03
类的加载过程 当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过下面三个步骤对该类进行 初始化: 加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象 链接:将java类的二进制代码合并到JVM的运行状态之中的过程 验证:确保加载的类信息符合JVM规范,没有安全方面的问题 准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配。 解析:虚拟机常量池的符号引用(常量名)替换为直接饮用(地址)的过程。 初始化: 执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)。 当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。 虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步 来源: https://www.cnblogs.com/zitai/p/12234265.html

java学习笔记(Core Java)4 对象与类

99封情书 提交于 2020-01-26 06:12:20
第四章 对象与类 oop三个特征:对象的行为、状态、标识 类之间关系:依赖,聚合,继承 依赖:一个类的方法操纵另一个类的对象。(尽量减少这种耦合情况) 聚合(has-a)一个类作为另一个类的变量而存在 继承(is-a) 如果只声明一个类变量,而没有在堆空间中开辟没存, 那么这个变量就不能调用类中的方法 因为这个变量没有引用对象 !!一个对象的变量并没有实际包含一个对象,而仅仅引用了一个对象 Data data; 等同于: Data *data; //它只代表一个指针,而不拥有对象数据 get/set 访问器 一个源文件中只有一个公有类 javac <==> make 对包含main方法的类编译,运行时会自动编译其他相关类 也可以使用通配符* c++在类内部定义的方法为内联方法 java中,虚拟机会自动的监视调用经常被调用、可优化的方法 不要编写返回引用可变对象的访问器方法,如果要使用,应当返回一个clone副本 class Employee { 。。。 private Data getHireDay(); { return hireDay.clone(); //防止给其他Data变量赋值时的混肴状态 } } final和static ///////////////////////////// static: c:保留局部变量数据。数据具有本地隐藏性 c++

Java 构造器

别等时光非礼了梦想. 提交于 2020-01-26 06:03:47
Java 构造器 构造器是什么? 1.构造器,也称构造方法、构造函数。作用是构造出来一个类的实例,确保对象得到初始化。 2.构造器的格式: 权限修饰符 类名(无参/有参){}。 3.根据有无参数,可分为无参构造 和有参构造。 构造器的特性# 1.与一般方法名不同的是,构造方法名必须和类名保持一致,并且没有返回值。 2.Java编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,我们也可省略不写。实例化对象时无需赋值。 3.倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错。 4.当类实例化一个对象时会自动调用构造方法。 示例代码一:无参构造 学生类 public class Student { //权限修饰符是public,表示内部属性能被其他类访问到。若使用private,则需要set/get才能访问 public String name ; public int age ; //无参构造,编译器自带,可不写。 public Student ( ) { System . out . println ( "括号内无参数,这就是无参构造" ) ; } } 测试类 public class Test { public static void main ( String [ ] args ) { Student st = new Student

Java中的反射中class方法

ぃ、小莉子 提交于 2020-01-26 02:48:36
该内容转载自http://www.cnblogs.com/mengdd/archive/2012/08/18/2645553.html,供自己学习理解之用 Java中的反射中class方法 本文为反射的基础知识部分。   能够分析类能力的程序被称为 反射(reflective)。    反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,容许程序在运行时加载、探知、使用编译期间未知的class。即Java的反射机制可以加载一个运行时才得知名称的class,获得其完整结构。 一.Class类   在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为 运行时 的类型标识。   这个信息保存着每个对象所属的类足迹。虚拟机利用运行时信息选择相应的方法执行。   然而,可以通过专门的Java类访问这些信息。保存这些信息的类称为 Class.   (注:新版本为Class<T>,本文中经常为了方便只写Class)   API: java.lang.Class   (1.7) http://docs.oracle.com/javase/7/docs/api/index.html    获取类的Class对象的方法: 调用getClass() (Object类中的getClass()方法返回一个Class类型的实例) Boolean var1 = true;Class<

Java 反射与注解

左心房为你撑大大i 提交于 2020-01-26 02:46:14
一、Class 类 1.1 Class 对象 在 Java 中,每个已加载的类在内存中都有一份类信息,类信息对应的类是 java.lang.Class ,每个对象都持有指向它所属类信息的引用。所以想要获取 Class 对象,有以下三种方法: 通过类名获取: Class < Date > dateClass = Date . class ; Class < Integer > integerClass = int . class ; 通过对象的 getClass() 方法获取: Date date = new Date ( ) ; Class < ? extends Date > aClass = date . getClass ( ) ; 通过 Class 类的静态方法 forName 获取: Class < ? > aClass = Class . forName ( "java.util.Date" ) ; 1.2 名称信息 Class 提供了如下三个方法,由于获取名称信息,其作用和输出分别如下: getName :返回 Java 内部使用的名称; getSimpleName :返回简称; getCanonicalName :返回由 Java 语言规范定义的命名。 Class 对象 getName getSimpleName getCanonicalName int.class

Scala基础入门,纯干货!

一曲冷凌霜 提交于 2020-01-25 01:27:18
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。 今天用这篇文章,带大家入门Scala ! 〇,编程环境 1,安装Java 2,配置Java环境变量 3,安装Scala 4,配置Scala环境变量 参考文末阅读原文链接。 一,算术运算 二,输入输出 输出:println,print,printf 输入:scala.io.StdIn 写文件:java.io.PrintWriter 读文件:scala.io.Source 1,输出 2,输入 3,写文件 4,读文件 三,导入包package Scala有以下一些常见的导入package的方式 1,引入全部对象 (import scala.io._) 2,引入某个对象 (import scala.io.StdIn) 3,引入某些对象 (import scala.io.{StdIn,Source}) 4,引入后重命名 (import scala.io.{Source => Src,StdIn}) 5,隐藏某些对象 (import scala.io.{Source => _,StdIn}) 6,隐式引入

JavaOOP继承

本秂侑毒 提交于 2020-01-25 00:00:40
一.继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 eg: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 类的继承语法 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 { } class 子类 extends 父类 { } eg: //动物父类 public class Animal { private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); } public void sleep(){ System.out.println(name+"正在睡"); } public void

Java类和对象课后作业

北战南征 提交于 2020-01-24 23:15:59
1. public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Foo obj1=new Foo(); Foo onj2=new Foo(); System.out.println(obj1==obj2); } } class Foo{ int value=100; } 截图: 总结: 当 “ == ”施加于原始数据类型变量时,是比较变量所保存的数据是否相等 当 “ == ”施加于引用类型变量时,是比较这两个变量是否引用同一对象。 引用代表地址,所以 “ == ”实际上相当于比较两个引用类型变量中保存的对象地址是否相同。 2.以下代码为何无法通过编译?哪儿出错了? 推出结论: 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。 3. class InitializeBlockClass { {field=200;} public int field=100; public InitializeBlockClass(int value){this.field=value;} public InitializeBlockClass(){} } public class test { public