构造方法

JAVA知识总结(二):封装

家住魔仙堡 提交于 2019-12-04 15:22:06
时隔近一年,我突然想起来这个文章还没有发完,所以就继续开始写。也不知道自己上次写到哪里了,不管了这里从面向对象的三个特性说起。 类和对象 在这之前,我们先了解什么是对象,已经什么是面向对象?对象:万物皆对象,现实中实际存在的事物都可以看成一个对象。而面向对象就是人在关注对象, 关注事物的信息。那什么是类?类就是模子,通常用于确定对象将会拥有的特征(属性)和行为(方法)。也就是说对象是类的具体存在,而类则是对象的抽象化。苹果是一个类,你手里拿的苹果就是一个实例化的对象。 刚才说了对象具有属性和方法,那么属性和方法又是什么呢?属性就是对象具有的各种静态特征,通常用来说明对象有什么;而方法就是说明对象具有的各种动态行为,也即对象能做什么。 假如我有一辆吉普车,它的颜色,价格,型号就是属性;而它能加速,减速,停止就是具有各种方法。 创建类的一般步骤为:创建类==》实例化对象==》书写具体的逻辑。 通常我们在书写类的时候,都需要遵循单一职责原则(单一功能原则),也就是说 一个类应该有且只有一个引起功能变化的原因。如果在一个类当中承担的功能越多,那么它的交融,耦合性就越高,被复用的可能性就越低。特别是因为耦合度高,可能会因为一个职责的变化,引起其他职责的变化,进而影响整个程序的运行,这一点是我们所不想看到的。 实例化对象的过程可以分为三步:声明对象,实例化对象,将两者进行绑定

天天学JAVA-JAVA基础(2)

痞子三分冷 提交于 2019-12-04 14:42:59
如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA基础相关问题,通过阅读本文,你将掌握以下10点 1.StringBuffer 、StringBuilder 和 String 的区别是什么? 2.在一个静态方法内调用一个非静态成员为什么是非法的? 3.接口和抽象类的区别是什么? 4.成员变量与局部变量的区别有哪些? 5一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么? 6.静态方法和实例方法有何不同? 7.hashCode 介绍? 8.为什么Java中只有值传递? 9.线程有哪些基本状态? 10.一道阿里面试题,你会做吗? 1. StringBuffer 、StringBuilder 和 String 的区别是什么? 字符修改上的区别: String:不可变字符串; StringBuffer:可变字符串、效率低、线程安全; StringBuilder:可变字符序列、效率高、线程不安全; 初始化上的区别: String可以空赋值,StringBuffer不行,会报错(读者可自行测试) 小结: (1)如果要操作少量的数据用 String; (2)多线程操作字符串缓冲区下操作大量数据 StringBuffer; (3)单线程操作字符串缓冲区下操作大量数据 StringBuilder(推荐使用)。 2

Java之封装

可紊 提交于 2019-12-04 14:27:07
封装概述 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。 原则 将 属性隐藏 起来,若需要访问某个属性, 提供公共方法 对其访问。 封装性在Java当中的体现: 方法就是一种封装 关键字private也是一种封装 private的含义及作用 private是一个权限修饰符,代表最小权限。 可以修饰成员变量和成员方法。 被private修饰后的成员变量和成员方法,只在本类中才能访问。 封装的步骤 使用 private 关键字来修饰成员变量。 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。可以通过IDEA自动生成 封装优化 this关键字 当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。 如果需要访问本类当中的成员变量,需要 使用格式 :this.成员变量名。 this的含义: this代表所在类的当前对象的引用(地址值),即对象自己的引用。 方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。 构造方法 构造方法是专门用来创建对象的方法

抽象类与接口的区别与联系.

旧巷老猫 提交于 2019-12-04 14:23:37
区别 : ① 关键字: 抽象类 关键字 abstract class 接口 interface ② 子类实现 : 抽象类 子类 通过关键字 extends继承 接口 子类 通过关键字 implements 实现。 ③ 构造方法 : 抽象类中存在构造方法 接口中没有构造方法 ④ 属性和方法: 抽象类中可以存在一般的属性,也可以有一般方法。 接口中的方法都是public abstract修饰的抽象方法,接口中的属性都是public static final修饰的静态常量。 ⑤ 特点: 抽象类 特点 单继承 、多重继承 接口特点 : 多继承 、多实现、多重继承。 联系 : ① 接口是特殊的抽象类,里面全是抽象方法的抽象类。 ② 都不能创建对象,必须要通过子类来创建对象。 总结 :一般接口用于声明本质不同的事物的相同功能。而抽象类 用于声明本质相同的事物的相同功能。 来源: https://www.cnblogs.com/myxc-19/p/11870000.html

PHP之十六个魔术方法详细介绍

此生再无相见时 提交于 2019-12-04 14:05:18
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 __unset(),当对不可访问属性调用unset()时被调用。 __sleep(),执行serialize()时,先会调用这个函数 __wakeup(),执行unserialize()时,先会调用这个函数 __toString(),类被当成字符串时的回应方法 __invoke(),调用函数的方式调用一个对象时的回应方法 __set_state(),调用var_export()导出类时,此静态方法会被调用。 __clone(),当对象复制完成时调用 __autoload(),尝试加载未定义的类 __debugInfo(),打印所需调试信息 范例 下面让我们以实例的形式向大家讲解下这几个魔术方法时如何使用的。 一、 __construct(),类的构造函数

SpringBook+Lombok 使用教程

混江龙づ霸主 提交于 2019-12-04 08:48:36
什么是Lombok? Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。 Lombok也存在一定风险,在一些开发工具商店中没有Project Lombok支持选择。 IDE和JDK升级存在破裂的风险,并且围绕项目的目标和实施存在争议。 常用注解: @Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。 @Getter :使用方法同上,区别在于生成的是getter方法。 @ToString :注解在类,添加toString方法。 @EqualsAndHashCode: 注解在类,生成hashCode和equals方法。 @NoArgsConstructor: 注解在类,生成无参的构造方法。 @RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。 @AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。 @Data: 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。 @Slf4j: 注解在类

Java 常用IO流操作详解

点点圈 提交于 2019-12-04 07:57:17
1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 常用方法: // 从输入流中读取数据的下一个字节 abstract int read() // 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中 int read(byte[] b) // 将输入流中最多 len 个数据字节读入 byte 数组 int read(byte[] b, int off, int len) // 跳过和丢弃此输入流中数据的 n个字节 long skip(long n) // 关闭此输入流并释放与该流关联的所有系统资源 void close() 2).OutputStream OutputStream:字节输出流基类,抽象类是表示输出字节流的所有类的超类。 常用方法: // 将 b.length 个字节从指定的 byte 数组写入此输出流 void write(byte[] b) // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流 void write(byte[] b, int off,

File类

旧巷老猫 提交于 2019-12-04 07:13:13
1、静态方法(类名直接调用) ① static String pathSeparator 路径分隔符(字符串)    static char pathSeparatorChar 路径分隔符(字符)      windows:分号 ; linux:冒号 ② static String separator 名称分隔符(字符串) static char separatorChar 名称分隔符(字符) windows:反斜杠( \ );linux:斜杠 ( / ) 2、构造方法(通过创建对象传入参数) ① File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。   参数:把路径分成了两部分     File parent:父路径     String child:子路径   好处:    父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化    父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象 import java.io.File; public class Demo01File { public static void main(String[] args) { show();  } private static void show()

Spring常用的三种注入方式

吃可爱长大的小学妹 提交于 2019-12-04 05:55:15
Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。 构造方法注入 先简单看一下测试项目的结构,用maven构建的,四个包: entity:存储实体,里面只有一个User类 dao:数据访问,一个接口,两个实现类 service:服务层,一个接口,一个实现类,实现类依赖于IUserDao test:测试包 在spring的配置文件中注册UserService,将UserDaoJdbc通过constructor-arg标签注入到UserService的某个有参数的构造方法 <!-- 注册userService --> <bean id="userService" class="com.lyu.spring.service.impl.UserService"> <constructor-arg ref="userDaoJdbc"></constructor-arg> </bean> <!-- 注册jdbc实现的dao --> <bean id="userDaoJdbc" class="com.lyu.spring.dao.impl.UserDaoJdbc"></bean> 如果只有一个有参数的构造方法并且参数类型与注入的bean的类型匹配,那就会注入到该构造方法中。 public class

Java类和对象

此生再无相见时 提交于 2019-12-04 04:17:14
一、类   类是封装对象的属性和行为的载体,在Java语言中对象的属性以成员变量的形式存在,而对象的方法以成员方法的形式存在。 1. 类的构造方法    构造方法是一个与类同名的方法 ,对象的创建就是通过构造方法完成的,构造方法分为有参构造方法和无参构造方法,区别就在于有没有参数。说这么多概念是不是感觉有点麻木,直接看下面的例子吧。 public class Example { public Example() { // 定义无参构造方法 System.out.println("无参构造方法"); }​public Example(String name) { // 定义有参构造方法 System.out.println("有参构造方法"); }​} 在定义构造方法时,构造方法没有返回值,且构造方法不需要void关键字进行修饰。“public”是构造方法的修饰符,“Example”是构造方法的名称。   在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初始化。 2. 类的主方法   主方法其实我们已经见过很多次了,Java编译器通过主方法来执行程序,是类的入口点,语法格式如下: public static void main(String[] args) { // ...}   “static”是指主方法是静态的,若在其中调用其它方法