封装、 继承、 多态 、介绍

面向对象(oop)三大特征
    封装 、 继承、多态

封装(encapsulation)


   封装介绍
    封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,
数据被保护在内部,程序的其它部分只要通过授权的操作(方法),才能对数据进行操作

   封装的好处
1.隐藏实现细节    方法<---调用(传入参数...)
2.可以对数据进行验证,保证安全合理

封装的实现步骤
1.将属性进行私有化  (不能直接修改属性)
2.提供一个公共的set方法,用于对属性判断并且赋值
  public void serXxx(类型 参数名){
          //加入数据验证的业务逻辑
           属性 = 参数名 ;
            }
3.提供一个公共的get方法,用于获取属性的值
   public XX gerXxx(){//权限判断
         return xx;
}


继承


  基本介绍
继承可以解决代码复用,当多个类存在相同的属性(变量)和方法时,可以
从这些类中抽象出父类,在父类中定义这些相同属性和方法,所有子类不需要
重新定义这些属性和方法,只需要通过extends来声明继承父类即可。

  继承的基本语法
class 子类 extends 父类{
}
①子类会自动拥有父类定义的属性和方法
②父类又叫超累,甚类
③子类又叫派生类

继承的好处
1.代码的复用性提高了
2.代码的扩展性和维护行提高了

继承使用注意事项
1.子类继承所有的属性和方法,但是私有属性和方法不能在子类直接访问,
  要通过公共的方法区访问
  例如
  私有属性 只需在父类中添加共有方法get
  私有方法 只需在父类中添加一个共有方法,并在方法中调用私有方法即可使用

2.子类必须调用父类的构造器,完成父类的初始化
3.当创建子类对象时,不管使用子类的那个构造器,默认情况下总会去调用父类的
  无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中使用super
 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译将不通过
4.如果希望指定去调用父类的某个构造器,则显示的调用一下
5.super在使用时,需要放在构造器第一行
6.super()和 this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
7.java所有类都是Object类的子类
8.父类构造器的调用不限于直接父类!将一直网上追溯知道Object类(顶级父类)
9.子类最多只能继承一个父类(指直接继承),即java中是单继承机制

super关键字


  基本介绍
    supper代表父类的引用,用于访问父类的属性、方法、构造器

 super使用注意事项
1.访问父类的属性,但不能访问父类的private属性
      super.属性名
2.访问父类的方法,不能访问父类的private方法
      super.方法名(参数列表);
3.访问父类的构造器;
      super(参数列表);只能放在构造器的第一句,切只能出现一句!


super带来的好处和一些使用细节
1.调用父类的构造器(可以使得分工明确,父类属性由父类初始化,子类的属性由子类初始化)
2.当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super
  如果没有重名,使用super、this、直接访问是一样的效果
3.super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的
 成员;如果多个基类(上级类)中都有同名的成员,使用访问遵循就近原则。


super和 this 关键字的区别和比较


①关于访问属性
      this : 访问本类中的属性,如果本类没有此属性则从父类中继续查找
      super: 访问父类中的属性
②调用方法:
     this:访问本类中的方法,如果本类没有此方法,则从父类继续查找
     super: 直接访问父类中的方法
③调用构造器:
     this:调用本类构造器,必须放在构造器的首行
     super:调用父类的构造器,必须放在子类构造器的首行
④特殊:
    this:表示当前对象
   super:子类中访问父类对象

方法重写/覆盖(override)


    基本介绍
        方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称,返回类型,参数一样,
        就说子类的这个方法覆盖了父类的那个方法。
方法重写的注意事项
    子类重写也叫方法覆盖,需要满足下面的条件
1.子类的方法的 参数,方法名称,要和父类方法的参数,方法名称完全一样
2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类
3.子类方法不能缩小父类方法的访问权限
            public>protect>默认>private

重载(overload)和重写(override)比较


  ①发生范围:
         重载:本类
         重写:父子类

  ②方法名:
        重载:必须一样
        重写:必须一样
  ③形参列表:
        重载:类型,个数或者顺序至少有一个不同
        重写:相同
  ④返回类型:
        重载:无要求
        重写:子类重写的方法,返回的类型和父类返回的类型一致,或者是其子类
  ⑤修饰符:
        重载:无要求
        重写:子类方法不能缩小父类方法的访问范围

多态 


   基本介绍
     方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的
  多态的具体体现
1.方法的多态:
         重写和重载就体现了多动态
2.对象的多态(核心价值观)
 ①一个对象的编译类型 和运行类型可以不一致
 ②编译类型在定义对象时,就确定了,不能改变
 ③运行类型是可以变化的
 ④编译类型看定义时 = 号 的左边, 运行类型看 = 号的右边

多态使用注意事项
属性没有重写之说,属性的值全看编译类型
  多态的前提是:两个对象(类)存在继承关系


 多态的向上转型

1.本质:父类的引用指向了子类的对象
2.语法:父类类型 引用名 = new 子类类型()
3.特点:编译类型看左边  , 运行类型看右边
            可以调用父类中的所有成员(需要遵守访问权限),
            不能调用子类中的特有成员;
            最终运行效果看子类的具体实现

多态的向下转型
1.语法:子类类型  引用名 = (子类类型) 父类引用
2.只能强转父类的引用,不能强转父类的对象
3.要求父类的引用必须指向的是当前目标类型的对象
4.(当向下转型后)可以调用子类类型中所有的成员

 instanceof
    作用 判断对象的运行类型是否为xx类型 或者 xx类型的子类
    是的话 返回true 否则返回false


口诀 属性看编译   方法看运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

这b会代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值