java面向对象-继承、抽象类

1.继承
    概述:在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
    
继承的格式&使用
        class 子类 extends 父类 {}
  
 继承的特点:
        在java中只支持单继承
        多个类可以继承一个父类
        多层继承是可以的
        子类和父类是相对的
    
继承中成员变量的特点:
        子类只能获取父类非私有成员
        子父类中成员变量的名字不一样直接获取父类的成员变量
         子父类中成员变量名字是一样的获取的是子类的成员变量

    就近原则:谁离我近我就用谁
        如果有局部变量就使用局部变量
         如果没有局部变量,有子类的成员变量就使用子类的成员变量
         如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
    
    super:可以获取父类的成员变量和成员方法,用法和this是相似的

    方法的重写:在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法
     
方法的重载:在一个类中,有多个重名的方法,但是其参数不一样(参数的个数,参数的类型,参数的顺序),和返回值无关
    
    
方法重写的注意事项:
              不可以重写父类私有的成员方法,压根就看不到父类的私有成员
             子类重写父类方法,权限必须大于等于父类方法的权限
              注解
                    @Override:方法重写,说明下面的方法是重写父类的方法

2.继承中构造方法的执行顺序
    super(实参列表);语句  在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
    this(实参列表); 语句  在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用

3.继承的优缺点
    优点
        提高了代码的复用性
        提高了代码的可维护性
    
    
缺点:
        类的耦合性增强了
        开发的原则:高内聚低耦合
        内聚:就是自己完成某件事情的能力
        耦合:类与类的关系

4.抽象类
    
    只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
    
  
 抽象类的特点:
        抽象方法只能在抽象类里面
          抽象类和抽象方法必须被abstract修饰
          抽象类不能创建对象(不能实例化)
         抽象类中可以有非抽象的方法
         抽象类和类的关系也是继承
         一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类

    抽象类的成员的特点:
        成员变量
              可以有成员变量
              可以有常量
        成员方法
              可以有抽象方法
              可以有非抽象方法
          构造方法
              可以有构造方法的,需要对抽象类的成员变量进行初始化

5.抽象类的细节
    抽象类关键字abstract可以和哪些关键字共存?
    1.private:
        私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。
    
2.final: 
          抽象类不能和final共存,因为抽象类自身无法创建对象,我们需要通过子类创建对象,一旦抽象类使用final关键字,那么抽象类就没有子类
          抽象方法不能和final共存,因为抽象方法后期需要被子类重写,一旦加final无法重写   
  
 3.static:
          抽象方法不能和static关键字共存,因为一旦加static我们就可以通过类名直接访问抽象方法,由于抽象方法没有方法体,没有任何意义,也不允许这样做


    抽象类中是否可以不定义抽象方法?
        是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用

    抽象类是否有构造函数?
               有,抽象类的构造函数,是由子类的super语句来调用,用于给抽象类中的成员初始化

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值