Java面向对象三大特性(面试题1)

一、封装

封装就是尽可能的隐藏对象的内部实现细节,其实就是把都西昂的属性保护隐藏起来,并且控制对象的修改以及访问的权限,访问修饰符:private
私有的 修饰属性就是
只在本类可以使用。这样的话外界是不可以直接访问属性,通过set和get方法去访问对象的私有属性,这也是外界去访问私有属性的唯一通道,方法的内部可以对数据进行检测和过滤。

二、继承

关键字  ***子类 extends 父类***

继承是发生在类与类之间的一种关系,子类继承父类,继承关系是单继承的,只能有一个父类;子类继承父类之后,子类就可以使用父类中的属性和方法,也可以定义子类独有的属性和方法。

 继承的优点:
(1)减少代码量,提高了代码的复用性,又提高了代码的可扩展性
(2)使类与类之间存在继承关系,是实现多态操作的前提。

继承的特点:Java中为单继承,一个类只能由一个直接的父类,但是可以有多级的继承,属性和方法是逐级的叠加。

继承中有些东西是不可以被继承的: 也就是父类的一些东西不能被继承

1.父类中的构造方法:类中的构造方法,只负责创建本类对象,不可继承。
2.如果父类中的属性和方法被private私有的修饰,,那么子类也不能去继承。
3.父类和子类不在同一个包下,父类的属性和方法用default修饰的话,子类也不可以继承。

方法的重写:
1.当父类的方法不满足与子类的需求的时候, 子类中可以定义一个和父类相同的方法。
2.方法的重写原则:

  • 方法的名称,参数列表,返回值类型必须要与父类相同。
  • 访问修饰符不能比父类更加的严格(也就是子类的访问修饰符的范围可以等于或者大于父类,不能比父类还小)。
  • 子类覆盖了,或者说重写了父类的方法之后,调用方法的时候,优先执行的是覆盖后的子类的方法。

super关键字:
子类是可以直接访问从父类那里继承到得属性和方法得,但是当出现父类和子类的属性或者方法有重名的时候,就好比说子类重写了父类的方法,他们的方法名字是相同的,这个时候为了加以区分,再去访问,就用了super
,用super可以去调用父类的属性和方法。如果不加super去调用的话直接调用的是子类的方法,加了之后调用的就是父类的。
如果调用父类的同名属性,也是用super.属性名,访问本类的实例变量用关键字this。

super可以调用父类的构造方法: super调用父类的无参构造:一般是子类的首行省略了,super();
super(实参):调用父类的有参构造。

关键字 this和super:
这两个关键字使用在构造方法中时,都要求在首行,所以不能同时写这两个,
this表示当前对象引用,调用本类的属性,方法,本类的构造方法,包括继承的属性,方法。
super表示父类对象引用,调用父类的属性,方法,构造方法。
在这里插入图片描述

final关键字

使用final关键字做标识有**“最终的**”含义。

1. final 修饰类,则该类不允许被继承。

2. final 修饰方法,则该方法不允许被覆盖(重写)。

3. final 修饰属性,则该类的该属性不会进行隐式的初始化,所以 该final 属性的初始化属性必须有值,或在构造方法中赋值(但只能选其一,且必须选其一,因为没有默认值!),且初始化之后就不能改了,只能赋值一次。

4. final 修饰变量,则该变量的值只能赋一次值,在声明变量的时候才能赋值,即变为常量。

Object类

Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类。

Object类中的方法,适合所有子类!!!

三、多态
多态指的是对象的多种形态。

两个类中有直接或者间接的继承关系时,父类引用(变量)指向子类对象,从而产生多态。
比如: Animal a = new Dog ();
左边是父类的引用,右边是子类的对象。

应用场景:
1.使用父类作为方法形参,实现多态。
2.使用父类作为方法的返回值,实现多态。

多态的作用:
屏蔽子类间的差异
灵活,耦合度低。

1. 多态存在的前提(多态的三要素)

A.必须有子类和父类,具有继承或实现(继承)

B.子类必须重写父类的方法(重写)

C.父类的引用变量指向子类的对象(向上转型)

2. 多态的优点

A. 可替换性,多态对已经存在的代码具有可替代性

B. 可扩充性:增加的子类不影响已存在的类的特性的运行和操作

C. 接口性:多态时超类通过方法签名向子类提供了一个公共的接口,由子类来完善或者覆盖它而实现的

D. 灵活性:在应用中体现了灵活多样的操作,提高了使用的效率

E. 简化性: 多态简化对应用软件的代码的编写和修改过程,尤其在处理大量的对象的运算和操作时,这个特点尤为突出和重要。

多态中的成员特点:

成员变量:编译与运行时期都看父类! 成员方法:编译时期看父类,运行时期看子类

引用类型转换

1.向上转型(装箱)
1. 向上类型转换(隐式/自动类型转换),是小类型转换到大类型。

 

2.向下转型(拆箱)
在这里插入图片描述

3.instanceof关键字

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值