面向对象三大特性

面向对象三大特性指的是:封装、继承、多态
这三大特性支撑了整个面向对象的理论体系,是面向对象的核心

封装

1)概念

尽可能的隐藏对象的内部实现细节,控制用户对类的修改和访问的程度及权限,保障数据安全(数据隐藏)

对象的边界对对象内部的属性和方法起到保护的作用。

public 公开 不受边界约束
private 私有 只能在本类内部访问 无法突破边界

2)实现方式
  1. 私有属性:private 修饰属性,其他类无法访问

    902

    编译出错:

    903

  2. 提供公开的get/set方法

    语法:
    获取属性:

    public 类型 get属性名( ){
    return 属性;
    }

    设置属性:

    public void set属性名(类型 名称){
    this.属性名 = 名称;
    }

    例:
    904

  3. 访问形式:

    封装前:

    获取属性: stu.age
    设置属性: stu.age = 100;

    封装后:

    获取属性: stu.getAge();
    设置属性: stu.setAge(100);


继承

概念:类与类 is a 关系的体现,可以提高代码重用性。

1) is a 关系

类与类的一种关系,即子类(派生类) 是一种 父类(超类,基类)
前者一定拥有后者的特征与行为
子类一定拥有父类的属性与方法


2) 继承语法

class 子类 extends 父类

906

Dog继承了Animal类,则Dog类会获得Animal类中所定义的属性和方法

例:创建Dog对象访问eat方法

907

执行结果:

910

创建子类对象时,父类对象会作为子类对象的一部分体现在内存中。

※注意:

  1. Java中的继承关系为单继承关系,一个类只能有一个直接父类,但是可以多级继承。
  2. private成员(属性、方法) 无法继承(无法访问)

3)访问权限修饰符
本类同包子类其他包
private
(default)
protected
public

4) 方法覆盖(OverRide)

当父类所定义方法无法满足子类需要时,可以在子类中声明与父类相同的方法进行覆盖

语法要求:

访问权限修饰符相同或更宽,返回值类型、方法名、参数表相同

909

※注意:

参数表不同不构成覆盖,是重载。


5)super关键字

1、 super.
在子类中可以通过 super. 访问父类中的属性和方法**

2、super()、super(参数)
显示调用父类的构造方法,必须放在构造方法的第一行**

3、如子类构造方法第一行没有super(),则编译器自动添加(保证父类能够优先被创建)。


6)创建对象的过程

1、分配空间(子类+父类)
2、初始化父类属性 创建父类对象
3、调用父类构造方法
4、初始化子类属性 创建子类对象
5、调用子类构造方法

※注意:当继承关系为多级,2~3步循环执行。


多态(Ploymorphism)

1)概念:

父类引用可以指向不同的子类对象,可以产生多种形态。


2)语法:

父类类名 引用名 = new 子类类名;

父类类型 = 子类对象
主观类型 = 客观类型

910


3)特点:
  1. 子类对象始终不变
  2. 编译时,只能调用引用类型中声明的方法
  3. 运行时,如果子类覆盖了父类的方法,则执行覆盖后的方法

4)对象类型转换
  1. 子类对象 赋值给 父类引用

    Animal a = new Dog( );
    多态

  2. 父类引用 转换为 子类引用

    Animal a = new Dog( );
    Dog d =( Dog ) a; //如果想调用Dog中独有的方法时

    // 父类引用赋值给子类引用时,必须进行强制类型转换(保证编译通过),运行时,如果父类引用中所存储对象类型不符时,则会出现运行时异常。

    Animal a = new Cat();
    Dog d = (Dog) a ; //编译通过

运行时出现:java.lang.ClassCastException类型转换异常

※注意:
如果两个引用不存在继承关系,则不允许强制类型转换(编译错误)


5)作用

屏蔽子类之间差异
利于拓展,降低程序间耦合


6)instance of 关键字

判断:引用类型中 所存储的对象 是否与 某一类型 兼容、

语法

引用名 instanceof 类型(类名) //该表达式的结果为 boolean

true - - - 代表引用中所存储的对象 与该类型兼容

false- - - 代表引用中所存储的对象 与该类型不兼容(不是该类型或 该类型的父类)

作用:判断父类引用中所存储的对象类型后再进行强转,避免类型转换异常


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值