首页 > 编程语言 > 详细

java-规约-OOP

时间:2020-10-12 11:03:52      阅读:25      评论:0      收藏:0      [点我收藏+]
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

原文:https://www.cnblogs.com/java-quan/p/13800727.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!