• 《 JAVA 核心技术 基础知识》 第五章 笔记


    继承:


    子类不能访问超类 private 域


     this 用途:
      引用隐式参数
      调用类的其他构造器
     super 用途:
      调用超类的方法
      调用超类的构造器


    子类对象可以赋给超类的变量,该变量可以根据子类的具体实现调用不同方法
    不能将超类引用赋给子类变量,显而易见的例子,人是动物,但是动物不一定是人


    方法重载时,会一一列举类中同名的方法,或是超类中public 的同名的方法。


    子类方法不能低于超类方法的可见性


    使用 final 修饰符,类 将不能继承,而方法则不能在子类重写


    超类的引用赋值给一个子类变量必须进行强制类型转换,最好是在转换前判断是否能
    够转换成功:
    if(x instanceof Apple)
    {
    <span style="white-space:pre">	</span>y=(Apple)x;
    }

    抽象类:



    如果一个类继承自抽象类,除非自己本身也是抽象类,否则必须实现抽象类中所有的
    抽象方法。


    抽象类不能实例化,但是能够定义一个抽象类的对象变量,且只能引用非抽象类的对象。


    如果在超类中没有定义一个方法,而是在它的子类中定义了一个方法,则用超类定义的
    对象变量不能调用这个方法,编译器只允许调用在类中声明的方法。


    访问修饰符:
    private: 仅对本类可见,包括子类的其他类皆不可见。
    public : 对所有类可见。
    protected:对本包和所有子类可见。
    默认:对本包可见

    Object类:



    如果没有明确指出超类,则默认继承自 Object类:
    在java中除了基本类型不是对象,包括数组等,其他类型都扩展于 Object类


    一个比较好的equals方法

    public boolean equals(Object otherObject)
    {
    	if(this==otherObject)
    		return true;
    	if(otherObject==null)
    		return false;
    	if(getClass()!=otherObject.getClass())
    		return false;
    
    	Apple other=(Apple)otherObject;
    	return name==other.name&&price==other.price;
    }



    对于数组,可以使用Arrays.equals(type []a,type []b);判断


    //如果子类没有实现equals方法



    hashCode方法:



    String 类型的hashCode方法由包含的类容导出,如果两个 String 的内容相同,则
    hashCode应该相同,而 StrinBuffer 类型没有定义hashCode方法,将会由 Object类 
    默认的hashCode方法导出对象的存储地址


    需要组合多个散列值时候,可以调用Object.hash提供过多个参数
    public int hashCode()
    {
    	return Objects.hash(name,salary,hireDay);
    }


    equals 必须与 hashCode的定义一致,x.equals(y) 返回值应该与x.hashCode(y)相同


    如果存在数组类型的域,可以使用Arrys.hsahCode()根据数组元素计算散列值

    toString方法

    只要对象与一个字符串通过 '+'连接起来,java将会自动调用toString方法


    Object类 定义的toString 方法返回类名和散列码
     Arrays.toString(array);//打印数组
     Arrays.deepToString(array);//打印多维数组

    泛型数组列表

    ArrrayList<Apple>array=new ArrrayList<Apple>();
    
    
    boolean add(T obj)
    void ensureCapacity(int capacity);//确保数组不重新分配空间的的情况下的数量
    trimTosize()//削减到当前尺寸
    set(int index,T obj)
    get(int index)
    


    对象包装器:

    ArrrayList<Integer>list=new ArrrayList<Integer>();


    自动装箱:
    list.add(3)将会自动转会按成list.add(Ingetger.valueOf(3));
    自动拆箱:
    int n=list.get(i) 会翻译成 int n=list.get(i).intValue();
    Integer n=3;n++;
    Integer:
    int intValue()
    static String toString(int i,int radix)//指定进制转换成字符串
    static Integer valueOf(String s,int radix)//从指定进制初始化为Integer
    static int parse(String s,int radix)//返回字符串表示的进制的数


    可变参数方法:

     System.out.printf(String s,Object...objects);

    枚举类:

    public enum Size{
    		SMALL,MEDIUM,LARGE
    	};


    比较枚举类型值时可以直接使用==
    有需要的话,可以在枚举类中添加构造器,方法和域,


    整型数组int[]可以转换为Object,但是不能抓换为对象数组

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    悲观锁、乐观锁、行级锁、表级锁
    MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)
    刷题-力扣-148. 排序链表
    刷题-力扣-206. 反转链表
    刷题-力扣-203. 移除链表元素
    刷题-力扣-474. 一和零
    刷题-力扣-494. 目标和
    刷题-力扣-160. 相交链表
    刷题-力扣-34. 在排序数组中查找元素的第一个和最后一个位置
    刷题-力扣-33. 搜索旋转排序数组
  • 原文地址:https://www.cnblogs.com/Thereisnospon/p/4768436.html
Copyright © 2020-2023  润新知