对象与类

隐式参数与显示参数

  • 类的实例方法第一个参数是隐式参数,代表调用该方法的对象,方法中this关键字就代表隐式参数,从第二个参数开始才是方法括号中的参数。

构造方法

  • 构造方法默认返回值是新创建的对象,在lambd方法引用中可以用到
public class Main {
    public static void main(String[] args) {
        List<String> names = List.of("Bob", "Alice", "Tim");
        List<Person> persons = names.stream().map(Person::new).collect(Collectors.toList());
        System.out.println(persons);
    }
}

class Person {
    String name;
    public Person(String name) {
        this.name = name;
    }
    public String toString() {
        return "Person:" + this.name;
    }
}

基于类的访问权限

  • 一个方法可以访问所属类的所有对象的私有数据

封装的特性

  • 私有属性可以保障数据的安全性,设置值前也可以排除所有错误的数据
  • 私有方法可以在不需要是放心删除,不用担心在别处有使用

方法参数

  • 方法不能修改基本数据类型的参数(即数值型或布尔型)
  • 方法可以改变对象参数的状态
  • 方法不能让一个对象参数引用一个新的对象(实际上对象引用是按值传递的,传递的是对象的引用地址)

类路径

  • 类路径告诉javac编译器和java解释器(JVM的一部分)在哪里寻找它们要执行或导入的类
  • unix环境用“:”分隔各项路径,windows用“;”分隔,都用“.”表示当前目录。例:c:\classdir;.;c\archives\archive.jar
  • Java API提供的类,不必显示地包含在类路径中,默认会包含
  • javac编译器总是在当前目录中查找文件,但是java虚拟机仅在类路径中包含“.”目录的时候才查看当前目录,如果没有设置类路径,默认路径回包含“.”,如果设置了类路径但没有包含“.”,那么程序可以编译成功,但是运行会报错找不到类文件
  • java.lang包是所有类文件默认导入的
  • 设置类文件:-classpath c:\classdir;.;c\archives\archive.jar 整个指令要在一行
  • 编译器查找类文件会做的事情
    1. 使用未指定包的类,先在java.lang包中找,再在定义的类路径中找
    2. 导入其他包中的公共类,很容易找到源文件,源文件名与类名一致
    3. 导入当前包中非公共类,要扫描当前包所有源文件
    4. 如果源文件是否比类文件新,会重新编译

类设计技巧

  • 一定要保证数据私有
  • 一定要对属性初始化(可以提供默认值,也可以在构造方法中设置默认值)
  • 不要在类中过多使用基本类型(比如int默认值是0,Integer默认值是null,两者是不同的)
  • 不是所有的字段都需要单独的字段访问器和字段更改器
  • 分解有过多职责的类
  • 优先使用不可变的类(可以在多个线程间安全的共享)
posted @ 2022-09-20 18:31  扣jio大汉子  阅读(32)  评论(0)    收藏  举报