栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-继承

类、超类、子类
定义子类extends

Java中的所有继承都是公共继承,没有私有继承和保护继承

public class ClassB extends ClassA

子类比父类有更多的功能、封装了更多的数据。

覆盖方法override

子类中可以增加字段、增加方法或者覆盖超类的方法,但不可以删除字段和方法。

构造器

super(para1, para2, ...);

  • 使用super调用构造器的语句必须是子类构造器的第一条语句
  • 如果子类的构造器没有显示调用超类的构造器,将自动调用超类的无参数构造器。
  • 如果超类没有无参书数的构造器,子类中又没有显示地调用超类的其它构造器,则编译报错
继承层次

继承可以多层次,但不可以继承多个类(多重继承)。

多态polymorphism

对象变量是多态的,一个ClassA类型的变量既可以引用ClassA的对象,也可以引用ClassA类型任何一个子类的对象

阻止继承:final类和方法
  • 声明为final的类无法被继承
  • 声明为final的方法,子类无法覆盖该方法(final类中的所有方法自动成为final方法)
强制类型转换
  • 将某个类的对象引用转换成另外一个类的对象引用。将子类的引用赋值给一个超类变量时是允许的,但将一个超类的引用赋值给子类变量时(在继承链上进行向下的转换),就必须进行强制类型转换。
  • 只能在继承层次内进行强制类型转换
  • 将超类强制类型转换成子类之前,要用instanceof进行检查 (a instanceof A)
抽象类abstract

抽象类一般只用来派生其它基类,而非用来构造你想使用的特定的实例

  • 抽象方法
    public abstract void func () {... }

  • 包含一个或多个抽象方法的类本身必须被声明为抽象的
    abstract class ClassName { ... }

  • 抽象类也可以包括字段和具体方法

  • 即使不包含抽象方法,也可以将类声明为抽象类

  • 抽象类不能实例化

  • 继承抽象类有两种方式,一是在子类中保留部分或全部抽象方法,这样就必须将子类也声明为抽象类,而是在子类中实现全部的抽象方法

受保护访问(public/protected/private)
  • public:对外部完全可见
  • protected:对本包和所有子类可见
  • private:仅对本类可见
  • 默认:对本包可见,不需要修饰符
Object:所有类的超类
  • Object类是所有类的始祖,每个类都默认扩展了Object。

  • 可以使用Object类型的变量引用任何类型的对象
    Object obj = new AllClass();

  • 在Java中,只有基本类型不是对象,例如数值、字符和布尔类型的值都不是对象。

  • 所有的数组类型,不管是对象数组还是基本类型数组都扩展了Object类

equals方法

Object类中的方法, 用于检测一个对象是否与另一个对象相等.

  • equals():在Object中equals方法实际"ruturn (this==obj)", 实际还是用==进行比较,但是大部分类都会重写父类的equals方法,用来检测两个对象是否相等,例如String重写了equals方法,来比较两个字符串内容是否相同

  • == : 比较引用数据类型时,比较的是地址值。基本数据类型比较两个值是否相同,不能用equals(基本数据类型不是对象,没有方法),只能使用 ==。

相等测试与继承 hashCode()方法
  • 散列码(hash code)是由对象导出的一个整型值,散列码是没有规律的。不同对象的hash code值基本上不会相同。
  • Object类中的hashCode()方法,其值由对象的的存储地址得出
  • 如果重新定义了equals方法,那么就必须为用户可能插入散列表的对象重新定义hashCode()方法
  • hashCode()方法返回一个整数值,也可能是负数
toString()方法
  • Object中还有一个重要的方法,就是toString()方法,他会返回表示对象值的一个字符串。
  • 绝大多数toString()方法都遵循这样的格式:类的名字,随后是一对方括号括起来的字段值。
泛型数组列表

ArrayList

声明数组列表
  • [√] ArrayList staff = new ArrayList();

  • [√] var staff = new ArrayList(); 使用var关键字可以避免重复写类名

  • [√] ArrayList staff = new ArrayList<>();

  • [√] var element = new ArrayList<>();会生成一个Object数组

java,util.ArrayList

  • boolean add(E obj) 数组末尾添加一个元素,永远返回true
  • void add(int index, E obj) 后移元素从而将obj插入到指定索引位置
  • int size() 返回当前存储在数组列表中的元素个数
  • void ensureCapacity(int capacity)
  • void trimSize() 将数组列表的存储容量削减到当前大小
  • E set(int index, E obj) 特定位置设置值。并返回之前的值
  • E get(int index) 得到值
  • E remove(int index) 删除指定索引的值,并返回该元素
对象包装器wrapper与自动包装autowrapping
  • 所有的基本类型都有一个与之对应的类,这些类称为包装器。Integer、Long、Short、Double、Float、Byte、Character、Boolean(前6个派生于超类Number)。
  • 定义整型数组列表不能写成ArrayList,应该这样写:
    var list = new ArrayList();
    在调用list.add(3)会自动变成list.add(Integer.valueOf(3)), 称为自动装箱autoboxing
  • 当将一个Integer对象赋值给一个int值时,会自动拆箱,如int n = list.get(i);将自动转换成int n = list.get(i).intValue();

java.lang.Integer

  • int intValue() 返回一个int值
  • static String toString(int i) 返回一个String的值
  • static String toString(int i, int radix) 返回数值指定进制的String值
  • static int parseInt(String s) 返回字符串表示的整数
  • static int parseInt(String s, int radix) 按进制返回字符串表示的整数
  • static Integer valueOf(String s) 返回一个Integer,用字符串s表示的整数初始化
  • static Integer valueOf(String s, int radix)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号