zoukankan      html  css  js  c++  java
  • 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类


    1.包和访问权限修饰符
    1.1 包
    为什么要导包?
    将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹
    import java.util.Arrays;
    包的划分规则
    方案1 按照功能划分
    增删改查 CRUD
    www.qf.cm

    cn.qf.功能

    cn.qf.add
    AddStudent.java
    AddTeacher.java
    cn.qf.delete
    DeleteStudent.java
    DeleteTeacher.java
    cn.qf.update
    UpdateStudent.java
    UpdateTeacher.java
    cn.qf.select
    SelectStudent.java
    方案2 以模块进行划分
    cn.qf.student
    AddStudent.java
    DeleteStudent.java
    UpdateStudent.java
    SelectStudent.java
    cn.qf.teacher
    定义包的格式:
    package 包名;
    多层包名中间 点 分割
    带包的类编译和运行命令:
    编译: javac -d . 类名.java
    -d是打包 .是代表当前目录
    运行: java 包名.类名
    定义包的注意事项:
    1.package语句必须是程序的第一条语句
    2.package语句在一个java文件中 只能有一条
    3.如果没有package 默认表示无包名
    import关键字:
    其实就是让有包的类 对调用者可见
    格式:
    import 包名.类名;
    import java.util.Scanner;
    注意:
    这种方式导入的是指定包下的指定某个类
    * 通配符 意为导入当前包下的所有类
    import java.util.*; 不建议

    import 可以有多条语句存在
    1.2 访问权限修饰符
    四种访问权限修饰符
    本类 同包(子类/无关类) 不同包(子类) 不同包(无关类)
    private √
    默认(default) √ √
    protected √ √ √
    public √ √ √ √

    总结
    类及其所组成使用的常见修饰符****
    修饰符:
    权限修饰符 private 默认 protected public
    状态修饰符 static final
    抽象修饰符 abstract
    类:
    默认 public
    final
    abstract
    成员变量:
    四个权限修饰符
    static final
    用的最多的 private
    成员方法:
    四个权限修饰符
    static final
    abstract
    用的最多的 public
    构造方法:
    四个权限修饰符
    用的最多的 public
    除此之外的组合:
    接口中的成员变量 public static final
    成员方法 public abstract

    2.单例设计模式
    设计模式 就是软件对某一些问题 最行之有效的解决方案
    设计模式 纯粹的思想 不是偏代码的 不管哪个语言 都可以使用设计模式
    23种设计模式

    单例设计模式
    例如 配置文件 只需要一个
    游戏显示当前在线人数 这个功能是依靠于 计数器来实现的
    对于这项功能 通常都是定义一个计数器 来记录人数增加 或者减少
    只要创建一个计数器就够了
    这 一个 就意味着 单例的意思

    通过只创建一个对象 解决问题
    解决一个类在内存中只存在一个对象 这个问题
    想要保证对象的唯一性 如何实现?
    1.为了避免其他程序过多的创建对象 先禁止其他程序创建该类对象
    私有化构造方法
    2.为了让其他程序可以访问到该对象 只好在本类中 创建一个对象
    3.为了方便其他程序对自定义对象的是访问 可以对外提供一个方法

    //1.私有化构造方法
    private Single(){}
    //2.创建本类对象
    private static Single s = new Single();
    //3.对外暴露一个可以访问该对象的方法
    public static Single getInstance(){
    return s;
    }
    解决: 频繁的创建对象 销毁对象
    会造成系统性能下降 浪费内存
    饿汉式
    类一加载 就创建本类对象
    懒汉式
    调用方法 我才创建本类对象
    3.Object类常用方法
    public class Object类
    Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

    1.boolean equals(Object obj)
    指示其他某个对象是否与此对象“相等”。
    默认Object类中的equals方法 比较的是对象的地址值是否相同

    ==符号 和 equals()方法的区别****
    ==是一个比较运算符 既可以比较基本数据类型 也可以比较引用数据类型
    基本数据类型 比较的是值
    引用数据类型 比较的是地址值
    equals是一个方法 只能比较引用数据类型
    引用数据类型 在方法没有重写前 和 == 一样 都是比较地址值的
    引用数据类型 重写后 比较的是对象中的属性值
    因为比较对象的地址值没意义
    所以重写equals方法 比较对象的属性值是否相同
    如果属性值相同 我们认为是同一个对象
    2.int hashCode()
    返回该对象的哈希码值。
    如果根据 equals(Object) 方法,两个对象是相等的,
    那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

    如果根据 equals(java.lang.Object) 方法,两个对象不相等,
    那么对这两个对象中的任一对象上调用 hashCode 方法不
    要求一定生成不同的整数结果。
    但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

    规定:
    当 obj1.equals(obj2) 为true的时候 obj1.hashCode() == obj2.hashCode();
    当 obj1.equals(obj2) 为false的时候 obj1.hashCode() != obj2.hashCode();
    3.String toString()
    返回该对象的字符串表示。
    Object类中的toString()方法返回一个字符串
    该字符串由类名(对象是该类的一个实力)+@+地址值(16进制)的组成
    打印地址值没意义
    一般我们通过方法的重写 去打印对象的属性

    4.内部类
    将一个类 定义在另一个类的里面 里面的那个类就叫做内部类 内置类 嵌套类
    例如:
    class 电脑{
    属性 颜色 大小 型号
    行为 运行
    class CPU{

    }
    }

    class 人体{
    属性...
    行为...
    class 肝脏{

    }
    }
    4.1 成员内部类
    class Outer{
    class Inner{

    }
    }
    创建成员内部类对象格式:
    外部类名.内部类名 变量名 = new 外部类对象.new 内部类对象
    Outer.Inner oi = new Outer().new Inner();

    特点:
    1.内部类可以直接访问外部类中的成员 包括私有的
    2.外部类如果想要访问内部类的成员 必须创建内部类对象
    3.当类为内部类的时候 可以使用private修饰 因为它是外部类的一个成员
    4.当内部类被私有化后 就不能在外部其他类中创建该类对象了

    4.2 静态内部类
    当内部类被static修饰后 就叫做静态内部类
    创建静态内部类对象格式:
    外部类名.内部类名 变量名 = new 外部类名.内部类对象
    Outer_02.Inner_02 oi = new Outer_02.Inner_02();
    特点:
    如果内部类被静态修饰了 那么只能访问外部类中被静态修饰的成员 访问出现了局限性
    4.3 局部内部类
    放在类中方法中的类
    在局部内部类 访问它所在的局部变量时 只能访问被final修饰的常量
    jdk1.8的新特性 final 可以省略不写 但本质还是常量
    4.4 匿名内部类(内部类的简写格式)
    匿名内部类 其实就是内部类的简写格式

    if...else 能转换成三元运算符
    必须要有结果才能转成简写格式

    想要简化书写 必须有前提
    前提条件:
    内部类必须继承一个类 或者 实现一个接口
    格式:
    new 类或者接口名(){
    重写方法
    }.调用重写的方法();
    匿名内部类中定义的方法 最好不要超过3个

  • 相关阅读:
    Windows通过DOS命令进入MySQL的方法
    php使用phpqrcode生成二维码
    js字符串转换为Json对象的三种写法
    Linux系统中RPM软件包安装语法
    Linux系统中软件安装方式以及特点
    vue-生存周期
    echart力导向图
    css样式,高斯模糊
    某布局
    跨浏览器兼容
  • 原文地址:https://www.cnblogs.com/wanghuaying/p/9391051.html
Copyright © 2011-2022 走看看