Java面试 基础复习笔记03

3目录

1.面向对象三大特征之二----------继承

2.权限修饰符


1.面向对象三大特征之二----------继承

什么是继承Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起父子关系,例如:Student称为子类(派生类),People称为父类(基类 或超类)。

Eg: public class Student extends People {}

继承的优点提高代码复用性,减少代码冗余,增强类的功能扩展性。Java中子类更强大

继承的特点: 

                        子类可以继承父类的属性和行为,但是子类不能继承父类的构造器。子类有自己的构造器,父类构造器用于初始化父类对象。

                        Java是单继承模式:一个类只能继承一个直接父类。

                        Java不支持多继承、但是支持多层继承

                        Java中所有的类都是Object类的子类。

子类是否可以继承父类的静态成员?  子类可以直接使用父类的静态成员共享) ,但个人认为:子类不能继承父类的静态成员。(共享并非继承)

继承后:成员变量、成员方法的访问特点:在子类方法中访问成员(成员变量、成员方法)满足:就近原则子类局部范围找 然后子类成员范围找 然后父类成员范围找,如果父类范围还没有找到则报错。 如果子父类中,出现了重名的成员,会优先使用子类的,此时如果一定要在子类中使用父类的怎么办? 可以通过super关键字,指定访问父类的成员。

方法重写:在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类这个方法是重写的方法。 方法重写的应用场景 当子类需要父类的功能,但父类的该功能不完全满足自己的需求时。 子类可以重写父类中的方法。建议重写方法都加@Override注解,代码安全,优雅!

方法重写注意事项和要求重写方法的名称、形参列表必须与被重写方法的名称和参数列表一致私有方法不能被重写。 子类重写父类方法时,访问权限必须大于或者等于父类 (了解 :default < protected < public) 子类不能重写父类的静态方法,如果重写会报错的。

子类构造器的特点:

 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己

子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。 子类初始化之前,一定要调用父类构造器先完成父类数据空间的初始化。 怎么调用父类构造器的? 子类构造器的第一行语句默认都是:super(),不写也没事。子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己。

注意:如果父类中没有无参数构造器,只有有参构造器,会出现什么现象呢? 会报错。因为子类默认是调用父类无参构造器的。默认自己加上无参构造器。

this和super详情

this:代表本类对象的引用;super:代表父类存储空间的标识。

关键字

访问成员变量

访问成员方法

访问构造方法

this

this.成员变量

访问本类成员变量

this.成员方法(…)

访问本类成员方法

this(…)

访问本类构器

super

super.成员变量

访问父类成员变量

super.成员方法(…)

访问父类成员方法

super(…)

访问父类构造

2.权限修饰符

权限修饰符有四种作用范围由小到大(private -> 缺省 -> protected - > public )

修饰符

同一 个类中

同一个包中

其他类

不同包下的

子类

不同包下的

无关类

private

缺省

protected

public

final的作用 :

        final 关键字是最终的意思,可以修饰(方法,变量,类) 修饰方法:表明该方法是最终方法,不能被重写。 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。 修饰类:表明该类是最终类,不能被继承

        final修饰变量的注意 final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。 final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。

常量  常量是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。

static关键字的用途

在《Java编程思想》P86页有这样一段话:

  “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”简而言之,一句话来描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。更多见 :Java中的static关键字解析 - Matrix海子 - 博客园

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值