public class OOP {
/**
* 避免通过一个类的对象引用访问此类的静态变量或者静态方法
* 直接通过类名去访问
*/
// 错误使用例子:
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.name);
// 应该直接使用
System.out.println(Student.name);
Name name = new Name();
name.setName(Student.print0()); } /**
* 所有的复写方法必须加@Override注解
* 可以及时确保是否复写成功,
*/ /**
* 相同参数类型,相同业务含义,才可以使用java的可变参数,避免使用Object
* 例子:public List<user> listUsers(String type,Long ... ids){}
*/ /**
* 外部正在调用或者三方库依赖的接口,不允许修改方法签名,避免调用方产生影响
* 接口过时必须加入@Deprecated注解,并注释说明应该采用新的哪个接口
*/ /**
* Object的equals方法容易抛空指针异常,应使用常量或者确定的对象来调用
* 正确例子: "quan".equals(name)
* 错误:name.equals("quan")
*/ /**
* 所有的相同类型的包装类对象之间值的标记,都使用equals方法比较
* 注意:Integer var = ? 在-128~127范围的时候是直接在
* IntegerCache里面取出已经建立好复用对象的,这个区间的可以直接使用==
* 不再这个范围的时候,都是在堆上产生的,都是新的对象,所以使用==是不对的
* 推荐使用equals方法进行判断
*/ /**
* 基本数据类型&包装数据类型
* 1-POJO类属性必须使用包装数据类型
* 2-RPC方法返回值和参数必须使用包装数据类型
* 3-所有的局部变量使用基本数据类型
*
* 例子:
* Name name = new Name();
* name.setName(Student.print0());
* 报错:
* Exception in thread "main" java.lang.NullPointerException
* 因为name是int ,print0返回为Integer,会进行拆箱,找不到对象,空指针异常
*/ /**
* 使用索引访问String的split方法得到的数组时,需要做最后一个分隔符后有无内容的检测
* 否则可能出现IndexOutofBoundException异常
*/ /**
* 当一个类有多个构造方法,或者多个同名方法,这些方法一共按顺序放置在一起,
* 其他的类内定义的方法顺序依次为:
* 公有方法或者保护方法>私有方法>getter/setter方法
*/ /**
* 循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展
* 因为如果这样子写str = str + "hello" 会new一个StringBuilder对象,然后
* 进行append操作,最后通过toString返回String对象
*/ /**
* final 能够声明类,成员变量,方法以及本地变量。下列情况使用final关键字
* 1-不允许使用继承的类
* 2-不允许修改引用的域对象
* 3-不允许被重写的方法
* 4-不允许运行过程洪重新赋值的局部变量
* 5-避免上下文重复使用变量,使用final描述可以强制重新定义一个变量。
*/ /**
* 类成员变量与方法访问控制从严:
* 1-如果不允许外部直接通过new来创建对象,构造方法设置为private
* 2-工具类不允许有public或default构造方法
* 3-非static成员变量并且与子类共享,必须时protected
* 4-非static成员变量并且在本类使用,必须时private
* 5-static成员变量如果仅在本类使用,必须是private
* 6-如果是static成员变量,考虑是否为final
* 7-类成员方法只供类内部调用,必须是private
* 8-类成员方法只对继承类公开,必须为protected
*/ } class Student{
public static String name = "quan"; /**
* @see Student#print0() 如果这个不可用,应该用哪个
*/
@Deprecated
public void print(){} public static Integer print0(){
return null;
}
} class Name{
private Integer name; public Integer getName() {
return name;
} public void setName(Integer name) {
this.name = name;
}
// public int getName() {
// return name;
// }
//
// public void setName(int name) {
// this.name = name;
// }
}

java-规约-OOP的更多相关文章

  1. Java的OOP三大特征之一——继承

    Java的OOP三大特征之一——继承 子类继承父类的特征和行为(属性和方法),使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类 ...

  2. 为什么阿里Java规约禁止使用Java内置线程池?

    IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒. 告诉你手动创建线程池,效果会更好. 在探秘原因之前我们要先了解一下线程池 ThreadPoolExecutor 都有 ...

  3. 为什么阿里Java规约要求谨慎使用SimpleDateFormat

    前言 在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下: 其实之前已经介绍过使用JDK1.8的DateTimeFor ...

  4. 为什么阿里Java规约要求谨慎修改serialVersionUID字段

    serialVersionUID简要介绍 serialVersionUID是在Java序列化.反序列化对象时起作用的一个字段.Java的序列化机制是通过判断类的serialVersionUID来验证版 ...

  5. Java实现OOP(面向对象编程)

    一.对象的综述 面向对象编程(OOP)具有多方面的吸引力.对管理人员,它实现了更快和更廉价的开发与维护过程.对分析与设计人员,建模处理变得更加简单,能生成清晰.易于维护的设计方案.对程序员,对象模型显 ...

  6. 阿里巴巴Java规约插件试用

    阿里Java开发规约Eclipse插件介绍 阿里巴巴集团配合<阿里巴巴Java开发手册>PDF终极版开发的IDE插件,目前包括IDEA插件.Eclipse插件. 安装 检查环境 插件要求: ...

  7. Java的OOP三大特征之一——多态

    OOP(面对对象)三大特征之一——多态 What:多态性是指允许不同类的对象对同一消息作出响应,多态性包括参数化多态性和包含多态性,多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用 ...

  8. Java面向对象OOP思想概述

    目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...

  9. 初识JAVA之OOP

    有一段时间没发博客了,每次手打还是很累,但感觉很充实.. 最近发现很多初学者到了面向对象编程这个知识点时,不太清楚类是如何转化成为对象的,很是困扰,今天我在这里谈谈我的理解,大家一起来研究学习... ...

  10. Java复习-oop

    我们可理解“纯粹”的面向对象程序设计方法是什么样的:(1) 所有东西都是对象.可将对象想象成一种新型变量:它保存着数据,但可要求它对自身进行操作.理论上讲,可从要解决的问题身上提出所有概念性的组件,然 ...

随机推荐

  1. .NET Core Dto映射(AutoMapper)

    .Net Core Dto映射(AutoMapper) 我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现EF Core中的Entity Model和在项目中使用的Model之 ...

  2. windows mysql数据存储路径更改

    背景:之前服务器磁盘很小,随着数据量的不断增加,磁盘不够,所以新申请了更大的磁盘,然后需要将旧路径下的数据迁移到新磁盘上. 1.任务管理器-打开服务,找到mysql的启动项,停止服务,属性查看可执行文 ...

  3. 单网口RFC2544测试——信而泰网络测试仪实操

    一.测试拓扑 拓扑说明 测试仪一个端口和DUT一个端口相连 DUT假设是一台交换设备,它能够把测试仪发送的流量直接转发回来 注意:要求DUT必须能够把收到的流量环回出来,否则没有办法测试 二.测试思路 ...

  4. 【windows 操作系统】进程控制块(PCB)

    转载地址:https://blog.csdn.net/qq_38499859/article/details/80057427一.目录文章目录    操作系统3 ----进程控制块(PCB)详解    ...

  5. 60天shell脚本计划-8/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月3日 --修改时间:2021年3月7日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在评 ...

  6. 《Symfony 5全面开发》教程04、Symfony处理http请求的流程

    当我们访问项目的/test路径时,浏览器会向我们的服务器端发送一个请求.我们打开浏览器的开发者工具,打开network选项卡. 在地址栏中敲击回车,浏览器向我们的服务器端发送了一个请求.请求的地址是1 ...

  7. maven实现compile时将资源目录输出到target中

    由于现在项目采用的是 jboot 框架,升级最新版本2.1.5后,需要将原来的webroot资源改到 src/main/webapp目录下, 发现转移后,通过框架的app.java入口main函数无法 ...

  8. Leaflet:Event与Layer类属性、方法

    Event 之所以要说Event,是因为很多类都是继承自Layer--Marker.Popup.Tooltip.Path以及继承自Path的Circle.Polyline.Polygon...:而La ...

  9. Vue 常用命令

    创建全局脚手架 npm install -g @vue/cli-init # `vue init` 的运行效果将会跟 `vue-cli@2.x` 相同 vue init webpack my-proj ...

  10. mysql sql_mode=only_full_group_by问题临时解决

    执行代码 set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZER ...