Java学习笔记2----类与对象

一、学习笔记:

  1. 使用类图描述类(参考工具 – Astah

  2. 类是对象的模板,先加载类,才能构造对象。

  3. 要想创建一个完整的程序,应该将若干类组合在一起,其中只有一个类有main方法。

  4. 构造器与类同名,每个类可以有一个以上的构造器,不能在构造器里使用return返回某个值,总是伴随着new操作一起调用,也可以重载。

  5. 匿名对象应用场景
    a:调用方法,仅仅只调用一次的时候。匿名对象调用完的时候就是垃圾,会被回收
    b:可以作为实际参数传递。

  6. Java虚拟机的内存可以分为3个区域:栈,堆,方法区

    • 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等),JVM会为每个线程创建一个栈,用于存放该线程执行方法的详细信息(实际参数,局部变量等),栈属于线程私有。
    • 堆用于存储创建好的对象和数组(数组也是对象),JVM只有一个堆,被所有线程共享,不连续,分配灵活,速度慢。
    • JVM只有一个方法区(实际也是堆),用来存放程序中永远不变或唯一的内容(类信息(class对象),静态变量,字符常量等)
  7. 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象(一个内存地址 — 哈希码)。

  8. 构造方法的第一步总是super(…)来调用父类的构造方法。所以,流程就是先上溯到Object,然后再向下执行类的初始化块和构造方法,直到当前子类为止。静态初始化块调用顺序,与构造方法调用顺序一样。

  9. 垃圾回收算法:引用计数和引用可达,将对象分为年轻代,年老代,持久代

  10. this的本质就是“创建好的对象的地址”,由于在构造方法调用前,对象已经创建,因此,在构造方法中也可以使用this代表当前对象。可以使用this关键字调用重载的构造方法,避免相同的初始化代码,但只能在构造方法中使用,且必须位于构造方法的第一句。static方法中不能使用this

  11. 在类中,用static声明的成员变量称为静态成员变量,也称为类变量,类变量的生命周期和类相同,在整个应用程序执行期间都有效。static修饰的成员变量和方法,从属于类,普通类和方法从属于对象。在静态方法里调用非静态成员,编译就会报错。

  12. 包机制是Java中管理类的重要手段,通过包我们很容易解决类重名的问题,也可以实现对类的有效管理。包对于类,相当于文件夹对于文件的作用。同一个包里不能有重名的类。

  13. 包名:域名倒着写即可,再加上模块名,便于内部管理类。写项目时都要加包,不要使用默认包。

  14. Java中只有一个直接父类,java中类没有多继承,接口有多继承。子类继承父类,可以得到父类的所有属性和方法(除了父类的构造方法),但不一定可以直接访问,如父类私有的属性和方法。如果定义一个类时,没有调用extends,则它的父类是java.lang.Object。

  15. 对象 instanceof 类。

  16. 子类通过重写父类的方法,可以用自身的行为替换父类的行为。

    • 方法名,参数列表相同
    • 返回值类型,声明异常类型,子类小于等于父类
    • 访问权限,子类大于等于父类
  17. super是直接父类对象的引用,可以通过super来访问父类中被覆盖的方法或属性。

  18. 高内聚,低耦合。

  19. 【IntelliJ IDEA快捷键】alt + insert — 自动生成get/set的方法

  20. 多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同。

  21. 多态的要点:

    • 多态是方法的多态,与属性无关。
    • 多态的存在有3个必要条件:继承,方法重写,父类引用指向子类对象。
    • 父类引用子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。
  22. 在Java程序设计语言中,对象变量是多态的,一个Employee变量既可以引用一个Employee对象,也可以引用一个Employee类的任何一个子类的对象。

  23. 父类引用指向子类对象,我们成这个过称为向上转型,属于自动类型转换。向上转型后的父类变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要类型的强制转换,我们称之为向下转型。在向下转型的过程中,必须将引用变量指向真实的子类类型(运行时类型),否则会出现类型转换异常。

  24. final关键字的作用:

    • 修饰变量:被他修饰的变量不可改变,一旦赋了初值,就不能被重新赋值。
    • 修饰方法:该方法不可以被子类重写,但是可以被重载。
    • 修饰的类不能被继承
  25. 通过抽象类,可以避免子类设计的随意性。要点:

    • 有抽象方法的类只能定义抽象类
    • 抽象类不能事实例化,及不能用new来实例化抽象类
    • 抽象类只能用来继承
    • 抽象方法必须被子类实现
    • 抽象类可以包含属性,方法,构造方法,但是构造方法不能用new来实例,只能用来被子类调用
    • 抽象方法的意义在于将方法的设计和方法的实现分离了
  26. extends,abstract,interface,implements

  27. 面向接口编程

  28. 接口支持多继承

  29. 私有构造器,就是用private关键字声明的构造器。与一般公有构造器最大的区别在于,其访问权限是private,于是它只能被包含它的类自身所访问,而无法在类的外部调用,故而可以阻止对象的生成。所以,如果一个类只有一个私有构造器,而没有任何公有构造器,是无法生成任何对象的。这样的类在实际应用中最常用的是作为工具类,如字符串的验证、枚举转换之类的,通常只做成静态接口被外部调用即可。

  30. 【IntelliJ IDEA快捷键】ctrl + l — 查看类的继承结构图

二、注释、

[其他] Employee - 员工,职员

三、参考资料

【视频】Java课程 Java300集大型视频教程
《Java核心技术 卷1》

猜你喜欢

转载自blog.csdn.net/qq_41359212/article/details/80384363