Java面向对象知识点总结02---访问修饰符 组合 接口 继承 向上造型 final 基类初始化

1.访问修饰符

访问修饰符outer classinner classmember_varmember_funcnote
public包及包之外
protected同一包内和不同包的子类
default(friendly)同一包内
private只能被该类自身访问修改

2.组合

即实现接口,组合比继承更易维护,程序设计时优先选择组合的方法。

对象引用的三种初始化的方法:
指定初始化:

声明时就初始化完成或者在构造代码段中初始化。

在构造器中初始化:

如果调用默认构造器,成员变量会被初始化为默认值。

懒惰初始化:

如果对于某个成员变量一直没有初始化,那么JVM只会初始化该变量为默认值,只有到该变量第一次被调用时由程序员手动初始化。

3.多态的概念

多态就是事物的多种形态,一个对象在不同条件下所表现的不同形式

  1. 继承或实现:在多态中必须存在有继承或实现关系的子类和父类
  2. 方法的重写:子类对父类中的某些方法进行重新定义(重写,使用@Override注解进行重写)
  3. 基类引用指向派生类对象,即父类引用指向子类对象(向上造型)

4.upcast

向上造型,假如我们有以下类

Animal
eat()
Cat
cute()
Dog
pat()

当我们声明一个Cat时,我们可以有以下两种方法:

Animal cat = new Cat();//向上造型
Cat cat = new Cat();

使用向上造型的方法可以增强我们程序的兼容性和可扩展性,并且减少代码重复。
比如我们想要创建一个数组来存储很多Animals
我们只需要创建一个Animals数组,而不用创建一个Cat数组和一个Dog数组。

  1. 向上造型情况下,子类和父类存在同名的静态或非静态成员变量时,访问的是父类的成员变量
  2. 向上造型情况下,子父类存在同名的非静态成员方法时,访问的是子类中重写的方法
  3. 向上造型情况下,子父类存在同名的静态成员变量成员方法时,访问的是父类的成员方法
  4. 向上造型情况下,不能访问子类独有的方法
  5. 对于子类独有的方法,父类无法访问,

6.downcast

但是在上例中,若采用向上造型的方法来声明变量,那么我们的cat只能进行cat.eat()而不能进行cat.cute(),若需要使用cute方法我们可以进行强制类型转换,Cat realCat = (Cat)cat,这种强制类型转换就称作向下造型。
但是当我们向下造型时倘若我们将本是Cat类型的实例强制转换为Dog类型Dog dog = (Dog)cat,这时会报错,为了避免这种情况我们可以使用instanceof 运算来检测目标实例属于什么类。

	cat instanceof Cat // true
	cat instanceof Dog // false
	cat instanceof Animal // true 

5.final 关键字含义

final变量----常量

可以初始化但不能被修改

final方法----派生类无法修改的方法

并且效率高,如果一个方法是final的,所以对该方法的调用都转为内嵌调用

final类----不可以被继承的类
static final变量----静态常量

可以初始化但不能被修改

6.基类的初始化:

(1)在创建派生类对象时,该对象包含一个基类的子对象。基类的子对象的初始化是通过调用基类构造函数实现,自动在派生类的构造器中插入对基类的构造器的调用
(2)基类的构造器在派生类构造器之前被调用。
(3)如果没有默认的构造器或构造器带参数必须显式的调用
详细见这里

继承中的方法重写:
如果基类中的某个方法被重载多次,在派生类中依然可以继承,且不会hide基类中的任何版本。
重写是重新覆盖父类的方法,如果没有重写,那么子类调用一个子类没有的方法时,其实是调用父类。
重载是同样的方法名,但参数名称不同,为了防止错误的进行重载可以加上@Override标签

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LXTTTTTTTT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值