-
类成员的访问修饰符 :
作用域修饰符 同一个类中 同一个包中 子类中 任何地方 private 可以 不可以 不可以 不可以 默认修饰符 可以 可以 不可以 不可以 protected 可以 可以 可以 不可以 public 可以 可以 可以 可以 -
变量:
- 成员变量会有初值:参考数组的初值(整形0,浮点型0.0,布尔类型false,char类型是空格,引用类型是null)
- 局部变量没有初值
-
方法重载:同一个类中、方法名相同、参数个数或类型不同、与返回值、访问修饰符无关
-
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
-
继承条件下构造方法的调用规则:
- 子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法,系统默认调用父类的无参构造方法
- 子类构造方法通过super显式调用父类的有参构造方法,执行父类相应构造方法,而不执行父类无参构造方法
- 子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
-
方法重写:
- 方法名相同
- 参数列表相同
- 返回值类型相同或者是其子类
- 访问权限不能严于父类
- 父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
- 子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法
- 父类的私有方法不能被子类覆盖
- 不能抛出比父类方法更多的异常
-
方法重写与方法重载区别:
比较项 位置 方法名 参数表 返回值 访问修饰符 方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格 方法重载 同类 相同 不相同 无关 无关 -
抽象方法:
- 抽象方法没有方法体
- 抽象方法必须在抽象类里
- 抽象方法必须在子类中被实现,除非子类是抽象类
-
静态代码块
- 某个类当中固有的代码块
- 一个类当中可以有多个静态代码块,按编写顺序执行
- 静态代码块,只会在类被****加载****的情况下执行一次(声明例外)
- 类加载机制:只要执行了和这个类有关的****调用****,那么该类必然已经被加载
-
抽象类:
- 在抽象类当中,可以有普通方法,也可以有抽象方法;但是,抽象方法只能在抽象类当中声明;
- 抽象类除了多了抽象方法和不能被实例化之外,和普通类一致
- 抽象方法的语法,在修饰符和返回值之间,添加关键字abstract,抽象方法没有方法体,即不需要立即实现
- 没有抽象的属性
- 抽象类,不可被实例化
- 抽象方法必须在子类当中被实现,除非子类也是抽象类,也就是说,在抽象的类的子类当中,只要有一个子类实现了抽象方法,其后代将不必一定实现该抽象方法
- 对于一个子类来说,其父类当中所有的抽象方法,如果没有被实现过,那么将都需要去实现这些抽象方法
-
向上转型:父类声明指向子类对象
- 向上转型,父类声明,只能调用子类重写的方法,或者本身实现没有被子类重写的方法
- 多个子类实现同一个****重写****的方法,优先调用距离实现类最近的那个
- 向上转型,子类特有的方法,无法被调用
- 向上转型属于自动类型转换
-
向下转型:强制将父类型变为子类型
- 首先要向上转型过了,才能向下转型
- 向下转型之前,一定要判断实例的类型,要强转为那个引用,就判断是否是这个引用
- 向下转型属于强制类型转换
-
接口:
- 语法:使用interface来声明
- 方法:所有的方法都是抽象方法,不存在普通方法
- 抽象方法,只能使用共有的和默认的两种修饰符;因为,如果是私有的,那么除了本类以外不可见,如果是受保护的,要继承可见,那么问题就是****是否可见****。
- 接口当中,所有的属性都是静态常量
- 接口可以多实现,用逗号隔开,但是继承只能单根继承
- 接口同样不可以被实例化
- 接口和接口之间是多继承
- 所有接口当中的抽象方法,都必须被实现类实现
- instanceof判断是否是某个类型,看实现类,而不是看声明的类型
- 接口没有构造,抽象类有构造
java类和对象:封装、继承和多态
最新推荐文章于 2024-05-31 10:46:10 发布