Java面向对象三大基本特征

三大特征:封装,继承,多态

目录

特征一:封装 

封装是什么:

封装的含义:

实现封装的目的

关键字:--->访问控制符

getter和setter方法:

特征二:继承

在Java中类的继承:

继承的对象:

继承的使用---->Java是单继承,可多层继承    

继承中修饰符protected的使用:

  方法重写与方法重载的区别:

抽象类abstract class:

this和super的区别:

接口 interface :

 最终类 final class :

特征三:多态

语法要求:

多态现象的发生:

多态中Java引用的两个类型;

内部类(标识:$)

lambda 表达式 : (参数列表)-> 执行语句


特征一:封装 

  • 封装是什么:

面向对象编程语言对客观世界的模拟。

(客观世界指的是对象的状态信息都被隐藏在对象内部外界无法直接操作和修改)

分层理解:1.将对象的信息隐藏在对象内部。

                  2.不允许外部程序直接访问对象内部信息。

                  3.通过该类所提供的方法来实现对内部信息的操作和访问。

  • 封装的含义:

  把该封装的封装,该暴露的暴露。

(即实现良好的封装所具备的条件)

分层理解:1.将对象的成员变量和实现细节隐藏起来,不允许外部直接访问。

                  2.把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。

  • 实现封装的目的

 1.隐藏类的实现细节

 2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理使用

 3.可进行数据检查,从而有利于保证对象信息的完整性

 4.便于修改提高代码的可维护性。

  • 关键字:--->访问控制符

private默认不写protectedpublic
在类中在同包内在子类当中

范围在任意地方都可以

修饰的方法和属性不能被继承   

 

  • getter和setter方法:

gettersetter
用于获取属性的值用于修改属性的名

语法格式:

属性 数据类型  get变量名(){

return 变量名;

}

语法格式:

属性 数据类型  set变量名(int new变量名){

变量名 = new变量名;

}

                           格式:         get变量名和  new变量名中的变量名的首字母大写

特征二:继承

在程序中,继承描述的是事物之间的所属关系,通过集成可以在多种事物之间形成一种关系体系

  • 在Java中类的继承:

         指得是在一个现有的类的基础上去构建一个新的类,构建出的新的类被称为子类,子类会自动拥有父类所有可继承的属性和方法

  • 继承的对象:

         可见的成员(成员指的是:成员变量和成员方法)

继承的格式

class 子类 extends  父类(){

}

 

 

 

  • 继承的使用---->Java是单继承,可多层继承    

         1.在程序中,如果想声明一个类继承另一个类,需要使用关键字extends

         2.继承的优点:减少冗余重复代码,便于维护

  • 继承中修饰符protected的使用:

         1.在直接子类中都可以使用

            

父类中的使用protected  数据类型 父类;
直接子类中的使用this.父类

         2.子类对象外部无法访问(即不可挎包使用---->解决挎包问题的方法:方法重写(即扩大使用范围));

             继承后方法重写的原因:子类无法使用父类中定义的方法。

         3.不能再创建对象之后,用对象去.(点)父类中的protected属性。

  •   方法重写与方法重载的区别:

方法重写方法重载
同方法名同方法名

同参数列表

不能抛出更多异常

参数列表不同(必须的)

访问范围需变化,其他位置不变

(子类重写的访问权限>=父类的访问权限

子类重写的返回值类型<=父类的返回值类型)

与返回值无关

方法签名不可变(只允许访问范围可升级)

 

《---方法签名(方法名和参数列表)----》

即同名不同参
  • 抽象类abstract class

           在某种环境下,不满足完成一个类的条件呢,此时需要保留已完成的和未完成的。

              1.可以有抽象方法,也可以没有抽象方法

              2.非抽象方法中是可以有具体功能的方法

              3.抽象类中不能创建(实例化)对象,但有构造方法

            (构造方法仅仅是是用来初始化父类型中的成员)

              4.抽象类的用途:

                a)半成品,做模板

                b) 天生的父类

                c) 举例子描述,比如设计的各个环节,其中有未完工的部分

               5.抽象类的修饰符:

private 修饰static 修饰
不可用不可用
原因是必须被子类继承后重写,权限不能 为 private 。

原因是加上静态 static 关键字后,

调用方式是 类名.静态方法名,而该方法还没有实现,调用无意义,

 

  • this和super的区别:

                                 this和super不可同时存在      (少参会调多参)
this(代表当前类的实例)super

this()调用本类的有参构造方法

且必须放于构造方法的第一行

(只能调用一个构造方法)

super()默认调用父类的构造方法

this.   调用类中的属性和方法,

但不能调用构造方法

 

 
  • 接口 interface :

             1.  接口中的成员属性:都是常量

              2. 命名规则:全大写,多单词以下划线连接

              3.极端抽象类(jdk7中) ,方法全是抽象方法(jdk7中普通方法不能在接口中定义)

              4. 里面只有常量和抽象方法,以及静态方法(jdk8)和默认方法(jdk8)

                   (静态方法--->属于类,被类的所有实例共享,接口实现类对象不能调用接口中的静态方法)

                  jdk8中的函数式接口:指一个接口有且只有一个抽象方法。(注解标记为:@FunctionalInterface,以此检查)

              5.关系:(实现关系属于继承)

类与类接口与接口(likeA)接口与类类与抽象类接口与抽象类
继承关系(单继承)继承关系(多继承)实现关系继承关系(单继承)实现关系
extendsinterface A extends B,C,D

class A  implements B,C,D

 

一般以Impl结尾

extendsimplements

 

             6.接口实现类需要实现接口中所有抽象方法。(实现类和接口之间是多态关系)

  •  最终类 final class :

             1. 不能被任何类继承,即没有子类,没有多态!

             2.里面的方法都是最终方法,不能被修改。

             3.一般用来做一个工具类 (一个类没有继承任何一个类,哪么类默认继承Object类)

特征三:多态

  • 语法要求:

             1.必须有关系(继承或实现);

             2.父类型引用指向子类型实例。

  • 多态现象的发生:

              必须存在重写的方法,此时才有多态现象

  • 多态中Java引用的两个类型;

编译时类型(看左)运行时类型(看右)
父类引用的方法是否存在父类实例的重写后的该方法

类型的判断和转换:instanceof

     判断左边的类型是否是右边的实例(类型转换异常:ClassCastExpection

参数多态:

      在进行api设计时,一般都是参数多态

      不会写一个具体的子类,而是写父类型或接口类型

( 子类当做父类来用)  

  • 内部类(标识:$)

成员内部类
静态内部类
局部内部类
匿名内部类(     jdk8 匿名内部类中外部对象的 final 可以省略   )

 

  • lambda 表达式 : (参数列表)-> 执行语句

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值