zoukankan      html  css  js  c++  java
  • Java面向对象纪要

    以下所有内容来自《疯狂Java讲义(第二版)》,本文为读后总结要点。

    =========================================

    静态成员不能直接访问非静态成员。

    当系统加载类或者创建类的实例时,系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。成员变量放置在堆内存中。

    局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。保存在其所在方法的栈内存中。

    栈内存中的变量无须系统垃圾回收,随方法或代码块的运行结束而结束。

    局部变量的作用范围越小,它在内存中停留的时间就越短,程序运行性能就越好。能用代码块局部变量的地方,就坚决不要使用方法的局部变量。

    【继承】

    如果程序员没有为Java类提供任何构造函数,系统会为这个类提供一个无参数的构造器,执行体为空,不做任何事情。

    一旦程序员提供了自定义的构造器,系统就不再提供默认的构造器。

    Java子类不能获得父类的构造器。

    不管我们是否使用super调用来执行父类构造器的初始化代码,子类构造器总会调用父类构造器一次。

    【多态】

    Java引用变量有两个类型:编译时类型,运行时类型。如果两者不一致,就会出现所谓的多态

    父类引用指向子类对象。

    相同类型的变量调用同一方法时呈现出多种不同的行为特质,这就是多态。比如,动物都会叫,但是不同动物叫的声音不一样,这就生物多样性。

    继承严重地破坏了父类的封装特性。

    继承要表达的是一种“是(is-a)”的关系,而组合表达的是“有(has-a)”的关系。

    初始化块在构造函数之前执行,多个初始化块按代码里的先后顺序执行。

    1 {
    2     System.out.println("初始化块");
    3 }

    静态初始化块在类初始化时执行。

    1 static {
    2     System.out.println("静态初始化块");
    3 }

    使用javac编译源码后,初始化块会被嵌入到每个构造器中代码的最前面。

    有抽象方法的类必须定义为抽象类,抽象类不一定要有抽象方法。

    ==========END=========

  • 相关阅读:
    进程和线程的主要区别
    Mysql 指定字段数据排序 以及django的实现
    java String
    阿里云 邮件发送(Python)
    Python实现类似JavaScript 的Json对象
    JAVA 学习笔记
    记录一个MySql 分区表+Gap锁引起插入超时的案例
    ThreadPoolExecutor源码中的适配器模式
    Oracle 查询真实执行计划
    简单分析FactoryBean
  • 原文地址:https://www.cnblogs.com/flyfly121/p/4698564.html
Copyright © 2011-2022 走看看