Java基础-类的继承

  1. extends来继承父类(超类,基类)
  2. 只要父类里面的变量或方法是公开(public)的就会继承下来
  3. 方法覆盖
    1. 在子类中写一个与父类的方法同名的方法
    2. 通过super.方法名 可以访问被覆盖掉的父类方法
  4. 父类的构造优于子类,所以构造器内写super是在最前面
  5. Father f=new Son()或new SonSon();//合法。这个叫多态,类的多种形态
    1. 这时只能调用father,son共有的方法
  6. Son s=new Father();//不合法
  7. 一个派生类只有一个父类,一个父类可以有多个派生类,所有类的父类是Object类
  8. 方法加上fianl不能被派生类重写(覆盖),类加上final不能被继承
  9. 强制类型转换(面试点)
    1. 条件:祖先类的引用=子孙类的堆中值的地址(子孙类对象地址)
    2. 强制类型转换的两个对象必须是直系关系,不能是旁系关系
    3. Father f=(Father) new Son();
    4. Father f=new SonSon();Son s=new Son();s=(Son)f;
    5.  A instanceof B:判断B是不是A的子孙类,判断适不适合强制类型转换的条件
  10. 抽象类:侧重于提取共性
    1. 因为子类可能会覆盖掉父类的方法,所以父类只提供方法名,方法内容由子类自己来编写实现
    2. 抽象类不能new自己,但是可以new数组。如果Person是抽象类,那么
      1. Person p=new Person();//不合法
      2. Person[] arr=new Person[2];//合法
    3. 抽象类和接口有什么共同点和不同点(面试点)
  11. Object,所有类都有这几种方法,因为其他类是Object类的子类(面试点)
    1. Equals
      1. 什么意思(object和String里面的作用都要说出来):比较两个对象的地址是否同一个地址;字符串里面比较的是字面量,不是字符串地址。==:在引用类型里指的是地址是否相等,基本类型里面指的是值是否相等。
      2. 如果重写equals注意什么?为什么?:如果重写equals的话一定要重写hashCode。因为hashmap进行计算的时候hashcode和equals合作。
      3. Hashmap中怎么用的:key值判断相等需要用到equals(),hashmap存储的时候需要用到hashcode(),key一样的对象会根据hashcode分配到同一个桶,
      4. String的hashcode根据字面量(编码值)进行计算
    2. getClass:获取类信息
    3. hashCode:不同对象hashCode基本上不会相同,但是有一定的小概率是相同的。两个对象的hashCode不同那么他俩一定是不同的对象。
      1. hash散列:没有规律但是比较均匀
      2. hashCode是根据内存地址生成的
    4. Notify:唤醒当前线程
    5. notifyAll:唤醒所有线程
    6. toString:返回该对象的字符串表示:输出对象的时候默认调用toString方法
    7. Wait:当前线程进入等待队列
  12. 泛型:广泛的代表所有类型
    1. 创建:public class Arr<TYPE>{public TYPE a;},TYPE不能是基本类型
    2. 声明:
      1. Arr<String> arr1=new Arr<>();arr1.a="泛型";
      2. Arr<Person> arr2=new Arr<>();arr2.a=new Person("AGI");
      3. Arr<int[]> arr3=new Arr<>();arr3.a=new int[]{1,2,3,4};
  13. 对象包装器和自动装箱(面试点)
    1. 装箱:Integer a1=9时把int类型的9转换成Integer,这个叫装箱。也就是说基本类型转成包装类叫自动装箱。
    2. 拆箱:int b1=a1时把Integer转成int,这个叫拆箱。包装类型转基本类型叫拆箱。
    3. 什么是128陷阱?两个变量值在-128~127时直接引用常量池里面的值,超出这个范围则另外申请自己的存储空间,所以这两个变量的字面量在值相等并且范围在(-128~127)时用==比较会返回true,超出这个范围则返回false。
      1. Integer a=12; Integer b=12;a==b->true
      2. Integer a=128; Integer b=128;a==b->false
      3. 超范围使用:a.intValue()==b.intValue()->true
  14. 可变参数方法
    1. Method(String … str)//可以传输0到n个参数,编译器最终把参数转换成数组
  15. 枚举类:定义了一个类,限定实例个数不能增加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值