构造方法

01_编程规约——OOP规约

痴心易碎 提交于 2019-11-30 11:16:45
1.【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,避免增加编译器解析成本,直接用“类名.变量名”访问即可。 2.【强制】所有的覆盖方法,必须加@Override注解 说明:加@Override可以准确判断是否覆盖成功,另外如果在抽象类中对方法签名进行修改,对应的实现类会马上报编译错误。 3.【强制】相同的参数类型,相同业务含义,才可以使用Java的可变参数(Integer... ids),避免使用Object。(注意:尽量不要用可变参数编程) 说明:可变参数必须放在参数列表的最后。 非得使用的话,例子:public User getUsers(String type, Integer... ids){...} 4.【强制】外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用产生影响。接口过时必须加@Deprecated注解,并清晰地说明采用的新接口或者新服务是什么。 5.【强制】不能使用过时的类和方法。 6.【强制】Object的equals方法容易抛空指针异常,应该使用常量或者确定有值的对象来调用equals方法。 正例:"test".equals(object) 反例:object.equals("test") 说明:推荐使用java.util.Objects#equals 7.【强制】所有的相同类型的包装类对象之间的值比较

Java 构造方法、final

懵懂的女人 提交于 2019-11-30 10:50:16
构造方法:构造(创建)对象时使用的方法。 方法名必须与类名称 完全相匹配; 构造方法 不需要返回类型 ; 构造方法不能被static、final等关键字修饰,且 不能有return 返回语句; 伴随着new被调用 构造方法不会被继承,但是子类创建对象时会执行父类的构造方法,因为子类中所有构造方法的第一行有默认的隐式super()语句 1.隐式无参构造方法 默认自带的,无参,并且方法体是空的,啥都没有。如果重写了任何一个,则这个空的就没了。 2.显式无参构造方法 重写默认自带的构造方法,在方法体里写点东西 3.显式有参构造方法 一般用于将参数值 传给 对象里的属性值 关于构造方法的几种情况 1.重写构造方法后,原本的默认无参构造方法就没了,但是new的时候需要执行,如果重写的构造方法时有参,则需要传参; 如果父类只有有参构造方法,则子类构造方法也需要参数,此时需要写super(参数);为了执行父类的构造方法。 2.父类构造方法只能在子类构造方法里被调用,用super();调用 3.调用父类普通方法,super.方法名(); final(不可变) final修饰的 类 不能被继承,即和abstract矛盾 final修饰的 方法 不能被继承或重写,即不能被改变,private修饰的方法也是这样 final修饰的 变量 需要定义初始值,并且不能修改。定义初始值的方式有2中,直接赋值 和

Spring——依赖注入(DI)详解

↘锁芯ラ 提交于 2019-11-30 09:25:50
声明 :本博客仅仅是一个初学者的学习记录、心得总结,其中肯定有许多错误,不具有参考价值,欢迎大佬指正,谢谢!想和我交流、一起学习、一起进步的朋友可以加我微信Liu__66666666 这是简单学习一遍之后的记录,后期还会修改。 一、概念引入 ​ 我们通过前文 Spring——IOC 已经知道怎么创建一个空白的实例对象,但是这个实例对象是没有进行任何成员变量设置的,都是默认值,例如int类型默认为0、引用类型默认为null。 ​ 那我们如果想创建带有特定属性的对象,那现在有个Computer类,他有属性”型号“。所以出厂的时候这个属性就是早被设定好了,那代码中的工厂如何去设置这个属性呢?其实依赖注入(DI,Dependency Injection)所做的工作就是为Spring中的Bean设置属性(成员变量的值)。 ​ 百度百科概念:所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。 二、依赖注入方式 ​ 依赖注入常见的有三种: - 通过构造方法注入 - setter方法注入 - 接口注入 ​ 现在有苹果电脑公司的“MacBook pro 2019”型号的电脑都是“macOS Mojave”系统

面向对象和构造器

吃可爱长大的小学妹 提交于 2019-11-30 07:33:56
面向对象 面向对象和面向过程的区别 面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。C语言是一种典型的面向过程语言, Java是一种典型的面向对象语言。 面向对象和面向过程思想的总结 都是解决问题的思维方式,都是代码组织的方式。 面向过程是一种“执行者思维”,解决简单问题可以使用面向过程。 面向对象是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象。 面向对象离不开面向过程: 宏观上:通过面向对象进行整体设计 微观上:执行和处理数据,仍然是面向过程。 类 类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。 类:我们叫做class。 对象:我们叫做Object,instance(实例) 总结: 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。 类的定义 属性 属性用于定义该类或该类对象包含的数据或者说静态特征 属性定义格式: [修饰符] 属性类型 属性名 = [默认值] ; 方法

第7次作业--访问权限、对象使用

北城以北 提交于 2019-11-30 06:34:53
题目1: 在作业5的基础上,再创建一个柱体类,包含矩形对象、高和体积等三个成员变量,一个构造方法进行成员变量初始化,和计算体积、换底两个功能方法,在主类中输入长、宽、高,计算柱体体积,输入新的长、宽、高,创建新的矩形对象,并利用换底方法换底,再次计算柱体体积。 源代码: Rec.java package com.hou; import java.util.Scanner; /** * 定义一个矩形类 * 分别定义构造方法,求面积方法,求周长方法 * @author ASUS * */ class Rec {// 定义矩形类 public double a;// 成员变量a,b,area,girth public double b; public double area; public double girth; public Rec(double a, double b) {// 定义有参构造方法 this.a = a; this.b = b; } public double getArea() {//求面积的成员方法 area = a * b; return area; } public double getGirth() {//求周长的成员方法 girth = 2 * (a + b); return girth; } } Cylinder.java package com

第7次作业--访问权限、对象使用

前提是你 提交于 2019-11-30 06:23:54
一、作业一 在作业5的基础上,再创建一个柱体类,包含矩形对象、高和体积等三个成员变量,一个构造方法进行成员变量初始化,和计算体积、换底两个功能方法,在主类中输入长、宽、高,计算柱体体积,输入新的长、宽、高,创建新的矩形对象,并利用换底方法换底,再次计算柱体体积。 二、源程序 1、JuXing.java package hom_8; import java.util.Scanner; /** JuXing类定义了私有成员变量a,b、 构造方法和求面积方法 SiLengZhu类中定义了成员变量height,volumn、矩形类对象ju、构造方法、 求体积的getVolumn方法和成员变量修改器 */ public class JuXing { //矩形 private double a; //定义私有成员变量 private double b; double getArea(){//求矩形面积 return a*b; } JuXing(double a,double b){//构造方法 this.a=a; this.b=b; } } class SiLengZhu{//四棱柱 JuXing ju; double height; double volumn; public void setH(double height) {//修改器 this.height = height; }

java自学之路六(继承)

蹲街弑〆低调 提交于 2019-11-30 06:17:24
继承 格式: public class 子类名称 extends 父类名称 {} public class Employee { public void method() { System.out.println("方法执行!"); } } public class Teacher extends Employee{ public static void main(String[] args) { Teacher teacher = new Teacher(); teacher.method(); } } super 访问父类的重名变量 public void method(){ int age = 20; System.out.println(age); //20 System.out.println(this.age); //25 System.out.println(super.age); //30 } 重写 用@Override可以检测是否重写成功 注意: 子类方法的返回值,必须小于等于父类方法的返回值范围。java.lang.object是所有类的公共最高父类 子类方法的权限必须 大于等于 父类方法的权限修饰符。 public > protected > (default) > private,default不是关键字,而是什么都不写,留空。 设计原则

Lombok: Java开发的利器

杀马特。学长 韩版系。学妹 提交于 2019-11-30 06:09:05
Lombok是一个旨在减少代码开发工作的Java库。本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。 Lombok可以帮助Java开发人员完成以下这些事情: ##1. 不用再写setter/getter方法了## public class Animal { @Getter @Setter private String name; @Getter @Setter private String gender; @Getter @Setter private String species; } ##2. 不用再重写toString方法了## 可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。 ##3. 不用再重写equals和hashCode方法## @EqualsAndHashCode注解可以自动生成这些方法 ##4. 通过类注解来生成构造方法## @NoArgsConstructor生成一个默认的构造方法 @RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法

自学Java之day06_构造方法

让人想犯罪 __ 提交于 2019-11-30 06:05:11
构造方法 作用: 当一个对象被创建时候,构造方法用来初始化该对象, 或给对象的成员变量赋初始值。 构造方法的定义格式: 注意事项: 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样 构造方法不要写返回值类型,连void都不写 构造方法不能return一个具体的返回值 如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数、方法体什么事情都不做。 一旦编写了至少一个构造方法,那么编译器将不再赠送。 构造方法也是可以进行重载的。重载:方法名称相同,参数列表不同。 代码举例 public class Student { // 成员变量 private String name; private int age; // 无参数的构造方法 public Student() { System.out.println("无参构造方法执行啦!"); } // 全参数的构造方法 public Student(String name, int age) { System.out.println("全参构造方法执行啦!"); this.name = name; this.age = age; } // Getter Setter public void setName(String name) { this.name = name; } public String

自学Java之day06_Java封装

我与影子孤独终老i 提交于 2019-11-30 06:04:56
封装概念 概述 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。 原则: 将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。 封装性在Java当中的体现 方法就是一种封装 关键字private也是一种封装 封装的步骤 使用 private 关键字来修饰成员变量。 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。可以通过IDEA 自动生成 封装的操作——private关键字 private的含义 private是一个权限修饰符,代表最小权限。 可以修饰成员变量和成员方法。 被private修饰后的成员变量和成员方法,只在本类中才能访问。 封装优化——this关键字 this的含义 this代表所在类的当前对象的引用(地址值), 即对象自己的引用 。记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。 this使用格式: 封装优化——构造方法 当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。 构造方法的定义格式 注意: 构造方法的写法上,方法名与它所在的类名相同