Java学习 (面向对象上 )-----摘自《疯狂Java讲义》

2020 4.6

  1. 类中方法的局部变量只有经过显式初始化才能使用,因为局部变量不属于任何实例或类,总保存在其所在方法的栈内存中。在变量的定义时,系统不会为它分配内存,直到为这个变量进行赋值初始化才会将这份变量保存在内存中。
  2. this的使用,在一个run()方法中可以直接调用同个类下的另一个jump()方法,系统默认是this.jump()。
  3. static静态方法下对其他实例变量或方法的调用。
    假设在person类下静态方法想要调用run()方法
    new person().run()。
    在这里插入图片描述
    import 和 import static 导入的对象是不一样的
  4. import关键字可以方便对其他包的引用,但是多个包中有相同名的类,会导致编辑失败,在有多个包的引入时,也要把全名写清楚:java.sql.Date d = new java.sql.Date();
  5. import static 是对指定类的某个静态成员,静态方法或全部的静态成员,静态方法
  6. 系统创建对象,为对象分配内存后,如果类中没有构造器,则会调用默认无参数构造器,就是对对象进行默认初始化,所有基本类型实例变量为0,布尔类型为false,引用类型实例变量为null
  7. 构造器的重载
    构造器名必须与类名相同,所以同一个类的所有构造器名肯定相同
    在构造器B中调用构造器A可以用this(A需要的实参);
  8. java类只能有一个直接父亲,但可以有无数个间接父亲
    java.lang.Object是所有类的父亲
  9. 重载和重写
    两者的主要区别是参数列表有没有变化。
    重载主要是在同一个类的多个方法中,相同的方法名,不同的参数列表一个方法名对不同数据的不同处理方式
    重写主要发生在 父类子类 同名的方法 之间,相同的方法名,相同 的参数列表,表现出父类子类面对同样的数据的不同处理,当重写后,父类被重写方法无法直接调用。
    子类还想要调用父类的方法,
    1.则可以用super.方法名调用。
    2.也可以强制转换类型,(父类)对象名.方法名
  10. 子类对象创建时,内存不但会为子类对象分配空间,还会为从父类(直接+间接)继承的所有实例变量分配空间。
  11. 在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用来完成,
    使用super调用父类构造器必须出现在子类构造器执行体的第一行
    当调用子类构造器的时候,父类构造器总会在子类构造器之前执行;不仅如此,执行父类构造器时,系统会再次上溯执行器父类构造器,创建任何Java对象,最先执行的总是Java.lang.Object类的构造器
  12. 多态
    Java引用变量有两个类型,一个是编译时类型,一个是运行时类型 ,编译时类型由声明该变量是哦那个的类型决定,运行时类型有实际付给该变量的对象决定如果编译时类型和运行时类型不一致,就可能出现所谓的多态
    系统总是试图访问它编译类型所决定的成员变量,而不是运行时类型所定义的成员变量
    编译阶段只能调用其编译时类型所具有的方法,但运行时则执它运行时类型所具有的方法
    子类会覆盖父类的方法、
    向上转型;Java允许把一个子类对象直接赋给一个父类引用对象,无须任何类型转换
    父类的方法一旦被重写,那么如果父类的构造器调用了该方法,那么实现的是子类重写后的方法
  13. 引用类型之间的转换只能在具有继承关系的两个类型之间进行,把父类的对象赋给子类对象需要强制转换
  14. instanceof的使用 前儿后爹或者前实例后对象
  15. 初始化块 没有名字,没有标识符,修饰符只能加static,只在创建Java对象时隐式执行,而且在构造器之前执行
    在第一次创建一个a类对象时,因为系统中还不存在a类,因此需要先加载并初始化a类,初始化a类会先执行顶层父类的静态初始化块,在执行其父类的静态初始化块,最后才执行a类本身的静态初始化块。
    一旦a类初始化完成,就可以创建对象,每次创建对象都先给对象分配完内存后,开始初始化,都需要先执行最顶层父类的初始化块,变量初始化,构造器,然后执行其父类的初始化块,变量初始化,构造器,最后才执行a类本身的初始化块,变量初始化,构造器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值