分类 书 下的文章

基本概念

  1. 面向对象编程 CCP
  2. upcasting
  3. 动态绑定,不知道返回的类型是什么,void或者virtual
  4. 方法,构造方法,为了提高复用设置的多个构造方法
  5. 方法名字相同,但参数不同,方法重载,overload,功能类似的方法使用同一个名字更容易记住,调用更简单;重载方法返回值类型应该相同。
  6. 继承,extends.
    7。private,子类无法访问父类的private,改成protected就可以了
  7. 如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。

这里还顺带引出了另一个问题:即子类不会继承任何父类的构造方法。子类默认的构造方法是编译器自动生成的,不是继承的。

  1. public sealed class Shape permits Rect, Circle, Triangle {

    ...

    }

只允许Rect,Circle,Triangle继承它,这种sealed一般多用在一些框架里面

  1. 向上转型,upcasting; Person父类,Student子类,Person p = new Student(); 成立
  2. 向下转型,downcasting,失败,子类比父类功能多,无法凭空变出来功能。
  3. instance of,一般用在判断里面
  4. 构造方法,Consctructor,自动调用,和class同名,可以有多个,没有返回类型,主要用来初始化对象的状态
    使用this可以在一个构造方法中调用另一个构造方法

    class Person {

      String name; //实例变量
      int age;
    
      public Person(String name,int age) {
            this.name = name;  this.name是实例变量,name是参数
            this.age = age;
      }

    }

    this.name当前对象的实例变量
    不能再静态方法中使用this,静态方法是类级别的,和实例无关
    this只在实例方法中有效

  5. .....中间缺失大量笔记,网页未保存,包括面向对象编程(多态,包,内部类等),Java核心类,异常处理(断言,日志,单元测试),反射(各种调用,动态代理)等笔记
  6. 反射,访问字段,调用方法,调用构造方法,动态代理
    动态代理部分还是不太明白,明天用A4纸自己画一遍好了

    静态代码:a.定义接口 b. 编写实现类 c. 创建实例,转型为接口,并调用
    动态代码:a.定义接口 b. 直接在main里面用proxy.newProxyInstance()创建接口对象,传入classloader,传入要实现的接口,传入处理调用方法的invocationHandler,将返回的object强制转型为接口

    通过proxy创建代理对象,将接口方法代理给InvocationHandler完成的

    不明白,还是不明白

  7. 注解,Annotation
    @Override
    @Target 定义Annotation能够被应用于源码的哪些位置
    @Retention 定义生命周期
    使用反射处理
  8. 泛型,一种模板,编写模板代码适应任意类型
    泛型类型T不能用于静态方法
    静态泛型方法应该和实例类型的泛型方法区分
    多个泛型,比如Map<K,V>,key是一种类型,value是另一种类型
    擦拭法 Type Erase,Java实现泛型的方法,虚拟机对泛型一无所知,所有工作都是编译器做的(这句话不明白),编译器里面有<T>,虚拟机眼里只有object
    从<T> 到<? extends Number>,表示泛型类型限定为Number以及Number的子类,extends通配符
    super通配符
    Pair <Integer> => Pair<? super Integer>
    接受所有泛型类型为Integer或其父类的Pair类型
    entendts只允许读
    super只允许写
    这块有点半懂不懂
  9. 集合
    List ArrayList LinkedList,链表,(每个元素都指向下一个元素)

      ArrayList各种操作的快,内存占用少
      iterator比for循环遍历list更高效,因为太常用,所以改成了for each,常见的遍历list 代码

    1734400005198.png

小技巧

对浮点数加上0.5,再强制转型,达到四舍五入的效果

基础算法

冒泡排序

1734411681820.png