# java ## 介绍 java基础 #### bool类型的get方法,方法名是is开头的 #### 继承中的构造方法 构造方法不能继承 子类构造方法在执行时,一定会调用父类的构造方法 在子类构造方法中,通过super()方式调用父类构造方法 当父类中定义了无参数构造方法,super()可以省略不写,默认就是在调用父类中没有参数的构造方法 当父类中没定义无参数构造方法,必须显示写出super(),还要传入实参,super()还必须是子类构造方法的第一行 #### 继承中的代码块执行顺序 C extends B extendsA //代码执行顺序 //A的静态代码块>B的静态代码块>C的静态代码块>A的普通代码块>A的构造方法>B的普通代码块 >B的构造方法>C的普通代码块>C的构造方法 #### Object类equals方法 equals方法和==方法 ==如果两端是基本数据类型,判断的是值是否相等;如果两端是引用类型,那么判断的是引用的地址是否相等,判断是否指向内存上的同一个数据 string的常量池机制 方法区中有常量池,new string的代价 equal判断string指向的地址上的字符值是否相等 判断自定义类的两个对象的属性值是否全部相同,需要重写equals方法,使用重写的equals方法 #### Object类hashcode方法 和equals方法一样,只要对象的属性值相同返回的hash码就是相同的 equals方法是返回true,hashcode方法是返回一串无序不重复的数字 目的是为每一个对象生成独立的编码,也叫哈希码 在自定义类中,也会重写该方法,可以将该方法的实现方式改为根据属性计算生成 #### Object类toString方法 toString的目的是返回一个字符串表达形式(查看对象属性信息的方法) #### 组合关系 继承和组合是复用代码的两种方式 对于组合来说,一个类的属性不仅仅是基本数据类型,也可以是我们自定义的其他类,一个类作为另一个类的属性 #### 多态 一种事物,多种表现形态 子类声明成父类对象,子类拥有父类的全部属性和方法,还有自己独有的方法 父类对象能做的事情,子类对象就能做 向上转型(子类声明成父类) 如果子类对父类的方法进行了重写,子类声明成父类对象时,调用的是子类重写父类对象的方法 子类对象声明成父类对象后,只能调用到父类声明过的方法,不能调用到子类独有的方法 编译时认为是父类对象,只能调用到父类对象的方法,执行时认为是子类,执行子类重写的方法,占用子类内存 向下转型(父类声明成子类) 父类不能转换成子类对象,因为父类不能完成子类功能,但是可以强制转换让代码通过编译,但是运行时会出现类型转换异常 如果父类对象原本就是由子类对象声明而成的,那么转换成子类对象时不会出现异常的 #### 父类作为方法参数 父类作为方法参数,传参数的时候,如果是子类,会有一个默认的向上转型 #### 父类作为方法返回值 父类作为方法返回值,其任何一个子类对象都可以是返回的结果 也是隐形的向上转型 注意:如果想要判断返回的对象到底是哪个子类声明而来的,使用instance of运算符 #### 抽象方法和抽象类 1没有方法体的方法叫做抽象方法 2抽象方法由一个关键字abstract修饰 3抽象方法必须在抽象类中 4抽象类由abstract修饰 5抽象类不能被直接实例化 6抽象方法必须被子类重写,并提供方法体 7可以实例化抽象类的子类,声明成父类 8抽象方法其实就是对子类的一种要求,体现者子类必须具有哪些功能 9抽象类其实就是一个要求的集合 10抽象类体现者程序的设计和实现相分离的思想 11如果子类不想实现抽象方法,那么子类必须也是抽象类 12抽象类的子类要实现所有直接父类和间接父类的抽象方法 13抽象类中可以有非抽象方法 14抽象类可以有构造方法,但是不能被直接调用,是为了满足继承而准备的 #### 子父类对象在转换时应该注意什么 1子类对象可以声明成父类对象,向上转型,编译时认为是父类对象,只能调用到父类声明过的方法, 执行时认为是子类对象,占用子类内存,如果子类重写了父类的方法,会调用子类的方法 2父类声明成子类对象不允许,可以使用强制转换使编译通过,但是运行时会出错。如果父类对象原本就是子类对象,不会出错 父类作为方法参数,任何一个子类的对象都可以作为实参传入 父类作为方法返回值,任何一个子类对象都可以作为结果返回
8继承中的构造方法、继承中的代码块执行顺序、Object类equals方法、hashcode方法、toString方法、组合关系、多态、父类作为方法参数、父类作为方法返回值、抽象方法和抽象类...
最新推荐文章于 2024-09-15 19:46:31 发布