面向对象的编程及其特征(封装,继承,多态,抽象)

目录

1.封装

一、 面向对象的特征之一:封装与隐藏

二、权限修饰符:public   &    private    &    缺省(default)   &   protected  可以用来修饰属性和方法

2.继承

一、面向对象的特征二:继承

二、方法的重写   -----(方法的重载)   修饰符  返回值类型  方法名(参数列表) {}

3.多态

一、面向对象的特征之三:多态性

 

 


 * 面向对象的编程:
 *             1、封装
 *             2、继承
 *             3、多态
 * 
 * 理解一:人开门
 * 面向过程:人打开门
 * 面向对象:
 *     人{
 *         打开(门){
 *            门.开开();
 *        }
 *   }
 * 门{
 *         开开(){
 *         }
 * }
 * 
 * 理解二:人把大象装进冰箱
 * 面向过程:1.打开冰箱2.把大象装进去3.关闭冰箱门
 * 面向对象:
 * 人{
 *         打开(冰箱){冰箱.开开()}
 *         操作(大象){大象.进入(冰箱)}
 *         关闭(冰箱){冰箱.合上()}
 * }
 * 大象{
 *         进入(冰箱){}
 * }
 * 冰箱{
 *         开开(){}
 *         合上(){}
 * }

1.封装

一、 面向对象的特征之一:封装与隐藏

 

  •   问题:当创建了类的对象以后,如果直接通过“对象.属性”的方式对相应的对象属性赋值的话,可能会出现不符合实际情况的意外情况,我们考虑不让对象来直接作用属性,而是通过“对象.方法”的形式,来控制对象对属性的访问。实际情况中,对属性的要求可以通 过方法来体现
  •   解决方法:(封装的思想)将类的属性私有化,提供公共的方法(setter(){设置} & getter(){获取})即set和get方法来带调用

二、权限修饰符:public   &    private    &    缺省(default)   &   protected  可以用来修饰属性和方法

 

  • 1)权限从大到小排列:public > protected > 缺省  >private
  • 2)修饰类的权限有: public 缺省 

 * 修饰符             类内部    同一个包        子类        任何地方
 * private               yes            
 * (缺省)           yes          yes
 * protected          yes          yes               yes
 * public                yes          yes               yes            yes

2.继承

一、面向对象的特征二:继承

 

  • 1.为什么要设计继承性?
  • 2.通过“class A extends B”类来实现类的继承。       

         子类:A   父类(基类SuperClass):B

  • 3.子类继承父类以后,父类中声明中声明的属性和方法,子类就可以获取到。  

              1)一定要明确的是:当父类中有私有的属性或者方法时,子类同样可以获取得到,只是
                   由于封装的设计,使得类不可以直接调用。
              2)子类除了通过继承父类的方法、获取父类的结构之外,还可以定义自己的特有的成分。
              3)extends(扩展,继承):子类是对父类功能的扩展,子类不是父类的一个子集,而是
                   子类包含父类的功能,并有自己的独立功能。

  • 4.java的继承性只能单继承。不可以继承其它的类,一个子类只能继承一个父类,一个父类只能继承多个子类。

二、方法的重写   -----(方法的重载)   修饰符  返回值类型  方法名(参数列表) {}

 

  • 1、前提:有子类继承父类
  • 2.子类继承父类以后,若父类的方法不适用,那么子类可以对父类的方法重写或者覆盖。
  • 3.重写的规则

            1)重写的子类的“返回值类型   方法名  (参数列表)”与父类的方法一样。
            2)子类重写父类的方法时,子类的方法的修饰符类型不小鱼父类的方法的修饰符。
            3)若父类的方法抛出异常,那么子类的抛出的异常不能比父类大。
            4)子类的方法同为static和非static的。
            5)子类不可以重写private方法,因为定义为private方法时相当于子类中只是新定义一个方法,并没有对其进行覆盖。

 

3.多态

一、面向对象的特征之三:多态性

 

  • 1.多态性指的是什么?

          多态性,可以理解为一个事物的多种表现形态
              1)方法的重载和重写2)子类对象的多态性

  • 2.子类对象的多态性的前提:

           1)必须有类的继承
           2)要有子类对父类方法的重写

  • 3.程序运行时分为编译和运行两种状态

           对于编译时:“看左边”,将此引用变量理解为父类的类型
           运行时:“看右边”,看真正的对象的实体:子类的对象,那么执行的方法就是子类重写的。

  • 4. 子类对象的属性不适用与多态性,属性中不存在覆盖一说!

          例如:父类中id = 1001;子类中id = 1002;
          调用   父类  对象名(h) = new  子类(); p.id = 1001;(因为子类没有覆盖父类)

          //子类对象的多态性:父类引用指向子类对象,即子类对象赋给父类的方法
        Person p1 = new Man();     //调用的男人的实体
        //虚拟方法的调用:通过父类的引用指向子类的方法实体,当调用方法时,实际执行的是子类重写父类的方法。
        p1.eat();
        
        Man m1 = (Man) p1;
        m1.Chifan();
        
        Person p2 = new Woman(); 
        p2.eat();
        
        
        //Woman wo = (Woman)p1; //向下转型:父类到子类
        
        
        //instanceof:
        //格式: 对象a instanceof 类A    :判断对象a是否是类A的一个实例,是的话返回true,否则的话返回false
        //若a是A类的实例,那么a也一定是A类的父类的实例
        if(p2 instanceof Woman) {
            Woman w1 = (Woman)p2;
            w1.shopping();
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值