构造方法

类----构造方法

久未见 提交于 2019-12-22 06:33:19
类----构造方法 构造方法是用来创建对象的方法,当我们通过new关键字来创建一个对象时,其实就是在调用构造方法。 格式: public 类名称(参数类型 参数名称){ 方法体 } //student类中定义无参构造和全参构造 //无参构造 public Student ( ) { } //全参构造 public Student ( String name , int age ) { this . name = name ; this . age = age ; } //main中调用全参构造 Student student2 = new Student ( "娅" , 21 ) ; 注意: 构造方法的名称必须和所在的类的名称完全一致 构造方法不要写返回值类型,甚至是void都省略 构造方法不能return一个具体的返回值 如果没有写任何构造方法,编译时系统会默认分配一个(无参)构造方法。 如果编写了至少一个构造方法,系统就不会分配。 构造方法分两种:全参构造和无参构造,全面的编写是在一个类中同时编写两个构造函数。通过重载的方式调用。 为什么编写了构造方法后还要编写Getter/Setter方法: 构造方法用于创建一个对象,Getter方法用于获取对象值,Setter方法用于更改对象的一部分成员变量。 所以一个标准的类需要有: private成员变量 无参构造 全参构造 Get

发现意外之美

时间秒杀一切 提交于 2019-12-21 23:40:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 发现意外之美 - SwiftyJSON 源码学习 SwiftyJSON 是一个很优秀 Swift 语言第三方库。我们在之前的文章中对它有过介绍。相信大家对它也有了一些了解。提升开发功力最好的方式就是学习优秀的源代码了,记得大神 TJ Holowaychuk 也这么说过。所以我们这次一起来学习一下 SwiftyJSON 的代码。 SwiftyJSON 很适合我们做源码研究。首先,它的代码量很少,整个库只有一个代码文件。这样我们就能很快的了解它的整体结构。 另外,虽然它的代码量不大,但是却很充分的用到了 Swift 的特性。通过研究它,能帮助我们着切实的了解 Swift 以及这些特性的应用场景。 开始之前 首先呢,在学习 SwiftyJSON 代码之前,最好先了解一下怎么使用它。关于 SwiftyJSON 的使用,我们之前这篇文章中有讨论,如果大家之前没有使用过 SwiftyJSON 可以先参考这里: 使用 SwiftyJSON 处理 JSON 解析 踏上发现之旅 那么我们开始吧。 首先,我们打开 SwiftyJSON 的项目文件,就可以看到它的结构啦: 非常简单,只有两个文件 SwiftyJSON.h 和 SwiftyJSON.swift 。 其中 SwiftyJSON.h 文件中,只包含了两个定义 :

Swift中构造方法的解析

纵饮孤独 提交于 2019-12-21 23:22:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Swift中构造方法的解析 一、引言 构造方法是一个类创建对象最先也是必须调用的方法,在Objective-C中,开发者更习惯称这类方法为初始化方法。在Objective-C中的初始化方法与普通函数相比除了要以init抬头外并无太严格的分界,而在Swift语言体系中,构造方法与普通的方法分界十分严格,从格式写法上就有不同,普通方法函数要以func声明,构造方法统一为init命名,不需要func关键字声明,不同的构造方法采用方法重载的方式创建。 二、构造方法的复写与重载 在Objective-C中,不同的初始化方法就是不同的函数,这便不存在方法重载的概念。Swift中要创建自定义的构造方法,需要开发者对init构造方法进行重载操作。任何一个自定义的类,只要其有父类,除了可以继承下来父类已有的构造方法外,还可以复写父类的构造方法,使其适用于自身。和Objective-C类似,复写父类的构造方法时,要在其中调用父类的构造方法,重载可以理解为一种特殊的复写父类构造方法,因此在重载的构造方法中也要调用父类的构造方法。 创建一个继承于NSObject的类,复写构造方法,代码示例如下: class ClassOne: NSObject { //声明一个本类特有的常量 var tip:Int //复写父类的构造方法

IOC的基本概念

大憨熊 提交于 2019-12-21 20:50:13
IoC的基本概念 IoC(Inversion of Control),意为“控制反转”,也叫依赖注入(Dependency Injection),也有人认为依赖注入是控制反转的一种方式。IoC的本质是引入代理者以减少依赖关系。下面通过引入实例以比较IoC的好处 假设存在一个普通的业务场景,获取服务提供者发送的消息并加以处理 以下是上功能实现的类文件 ``` public class OurInfoProvider { private IOurInfoListener infoListener; private IOurPersister infoPersister; public void getAndPersisterInfo() { } } ``` 依赖类需要初始化,这是最直接的处理方式,我们主动的创建相关类实例,在OurInfoProvider类中形成了对aInfoListener、aInfoPersister的直接依赖 ``` public OurInfoProvider { infoListener = new AInfoListener(); infoPersister = new AInfoPersister(); } ``` 但是对于OurInfoProvider的业务处理过程,其并不关心依赖对象的实例化过程,只需要订阅或引入它们的实例即可

从哪里摔倒,从哪里爬起来...

若如初见. 提交于 2019-12-21 15:05:05
  这是我之前考核两次java的错题,心血来潮就想把它写成博客,虽然现在不学java,但以后看到仍可以警醒自己,毕竟一个人不能在同一个地方摔倒两次,当然它也代表着一段回忆!!! 下列说法正确的是( A ) A.一个Java文件中只能有一个类使用public修饰 //并且主方法要包含在该类中 B.JAVA程序中可以没有public类//可以无public类也可以没有主函数,只需同意个包里有一个主函数就可以通过调用进行运行 C.JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来 D.一个Java文件中一定要有一个类中有main方法 //同一个包里有一个即可 在JAVA中,Object类是所有类的父亲,用户自定义类默认扩展自Object类,下列选项中的( D )不属于Object类的方法。 A.equals(Object obj) B.getClass() C.toString() D.trim() //String类 在Java接口中,下列选项中有效的方法声明是( A )。 A.public void aMethod(); B.public aMethod(); //无返回类型 C.protected void aMethod(); //不能被其他包中的类继承 D.private void aMethod(); //只在该类有效,而接口中的方法则都必须要实现

Java反射和设计模式

好久不见. 提交于 2019-12-21 11:19:22
目录 Java反射 反射 为什么需要反射 类对象 反射相关的类 常见操作 获取类对象的方法(3种) 获取类中的构造方法 获取、调用类中的普通方法 获取、设置类中的属性 特例(带有数组参数的方法) 反射优点和缺点 使用反射模拟实际插件开发 内省 设计模式介绍 设计模式 单例设计模式 实现方式一:饿汉子(类加载时创建,天生线程安全) 实现方式二:懒汉子 实现方式三:静态内部类 简单工厂模式(不属于23种GOF设计模式之一) 案例 Java反射 反射 反射就是把Java类中的各种成分映射成一个个单独Java对象进行操作。 本质 :就是类的解剖技术。 类中成分主要包括:成员变量,构造方法,包等。 为什么需要反射 需求:我公司定义了一组接口,然后第三方公司按照我公司的接口实现了一套功能,然后交给我们,但是我们公司的项目已经结束,如何实现动态加载第三方公司提供的功能? 插件开发 (反射技术) 类对象 类的对象:基于某个类new出来的对象,也称实例对象。 类对象:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法) 反射相关的类 Class类——可获取类和类中的成员信息 Filed类——可访问类的属性 Method类——可调用类的方法 Constructor类——可调用类的构造方法 常见操作 获取类对象的方法(3种) 通过类的对象的 getClass(); 方法

反射 is 框架的灵魂

浪子不回头ぞ 提交于 2019-12-21 03:56:12
背景: 我不相信你会问—啥是框架? (简单理解为可复用的代码)像现在很流行的框架如 Spring , Spring boot,Spring AOC 等都是框架,组成它们的代码中总会见到反射机制。 简介: 反射: 将类的组成部分封装成一个对象。 用一张图解释哈: 过程解释: 还是一个老生常谈的问题,我们用高级语言编写的代码如何被计算机执行? 都知道计算机只能执行机器码。 所以我们编译高级语言代码最终也会生成机器码,只不过中间有一个过度的部分那就是字节码。利用 javac 生成字节码后,我们想执行这个程序。又知道计算机是从内存中读取指令和数据的,我们利用反射将字节码文件加载进内存,然后被计算机所执行。 使用反射的好处: 1 可以在程序运行中操纵这些对象 2 可以解耦,提高程序的可扩展性 =============================================================== 应用举例: 获取 Class 对象的方式(可以理解 Class 对象是反射的另一种体现): 1 Class . forName ( "全类名" ) // 将磁盘中的对应代码加载进内存,返回 Class 对象(**多用于配制文件) 2 类名 . class //通过类名的属性获取对象(内存中),(**多用于参数传递) 3 对象 . getclass ( ) // getclass

java知识回顾

佐手、 提交于 2019-12-20 20:24:24
一、构造方法能不能被继承   当然不能,1.构造方法是类的唯一入口        2.构造方法与类名相同        3.子类构造方法中隐式的调用了父类的构造方法 二、值传递和引用传递、不变类和可变类、直接赋值和浅拷贝和深拷贝    1.直接赋值:在java中,对象的传递、方法参数的传递(将实参赋值给行参)多数是通过=来直接赋值的 值传递是值的copy 引用传递是引用的copy,即内存地址的copy 引用传递又分两种 1.如果是不变类 对引用的操作不会改变原引用地址,但会改变现引用地址的值,他们指向不同的对象(new对象除外)    2.如果是可变类 对引用的操作不会改变原引用地址,但会改变对象的值,他们指向的是同一个对象(new对象除外)            3.不管是可变不可变,只要使用new来重新赋值,则是一个新的引用与对象,不会修改原来的引用与对象 2.浅拷贝:对象实现cloneable接口,重写clone类,可以拷贝对象内的基本数据类型以及不变类型,引用类型不会被拷贝    3.深拷贝:对象中的引用类型也实现cloneable接口。。。         修改引用时new新的对象,如get、set时         序列化(腌酸菜、冷藏)    可变类:提供修改自身的方法,不可变类:要修改对象时必须new一个对象,如 String、基本类型的包装类、BigInteger

JavaSE-22 反射

穿精又带淫゛_ 提交于 2019-12-20 10:10:17
学习要点 反射概念 反射的应用 反射概述 1 反射机制 定义 Java反射机制是指在程序在运行状态中,动态获取信息以及动态调用对象方法的功能。 Java反射的动态性质:运行时生成对象实例、运行期间调用方法、运行时更改属性。 Java 程序执行过程 反射执行过程 1) Java反射机制是在编译时并不确定哪个类被加载了,而是在程序运行的时候才加载、探知、使用。 2) Java反射机制能够知道类的基本结构,这种对Java类结构的探知能力,称为Java类的“自审”。例如开发环境eclipse或者myeclipse中的代码自动提示功能,就是利用了Java的反射机制,对所创建对象的探知和自审。 3) 通过Java反射,可以实现以下功能: 在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判断任意一个类所具有的方法和属性。 在运行时调用任意一个对象的方法。 2 Java反射常用API ava 反射常用核心类位于java.lang.reflect 包,常用类: 1) Class类—可获取类和类的成员信息 2) Field类—可访问类的属性 3) Method类—可调用类的方法 4) Constructor类—可调用类的构造方法 使用反射的基本步骤 1) 导入java.lang.reflect.* 2) 获得需要操作的类的Java.lang.Class对象 3)

iOS 的 set.get.构造方法

跟風遠走 提交于 2019-12-20 09:08:49
一、set方法和get方法 1.set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2.set方法 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 命名规范: 方法都是以 set 开头,而且后面跟上成员变量名,成员变量名的首字母必须大写 形参名称不要跟成员变量同名 3.get方法 作用:返回对象内部的成员变量 命名规范: get 方法的名称一般就跟成员变量同名 成员变量的命名规范 成员变量都以下划线 _ 开头 可以跟 get 方法的名称区分开 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量 代码示例 #import <Foundation/Foundation.h> // 声明 @interface Car : NSObject { int _wheels; // 轮子个数 } /*set方法*/ - (void) setWheels:(int)wheels; /*get方法*/ - (int) wheels; @end @implementation Car // set方法的实现 - (void) setWheels:(int)wheels { // 对外面传进来的轮子数进行过滤 if (wheels<=0