继承与抽象类

子类继承父类

  • 子类可以访问父类的非私有成员变量,非私有成员方法,构造方法不能继承。
  • 子类拥有父类的所有的属性和方法:私有的通过get set直接访问 非私有的直接访问
  • 子类可以加入特有的成员
  • Java只支持单继承,支持多层继承

Super

只能直接访问父类 不能访问父类的父类

- *继承中父子类出现同名变量
  访问父类变量 super.变量
- *继承中父子类出现同名方法

 可以通过super.方法名() 调用父类的原有的再继续添加特有的
- *继承中父子类中构造方法的关系

 a.在创建子类对象的时候,调用子类任何构造方法都会先执行父类的无参构造,如果父类还有父类,则先执行祖父类的无参构造。

 C.super()必须放在构造方法第一行

 D.子类只能调用一次父构造,如果父类有多个构造方法子类调用一个就可以。调用父类构造的目的:在创建子类对象时,父类的成员变量也会被开辟空间,这些空间也要被初始化。

 E.父类手动写上了有参构造方法时不会再默认添加无参构造方法,子类继承后会报错是因为找不到父类的无参构造。

 F.构造方法第一行 this() super()不能同时存在,任意选取一个保证子类构造方法调用到父类的构造方法即可。

子类的构造方法和set get:
 无参构造:
  添加super();
 有参构造:
    参数列表传递父类参数 子类特有参数
  Super(父类参数);
  this.子类参数=…;
Set get:
 父类中已经set get 的参数父类中不必再set get 子类特有的参数 set get

This 与super:

    this.成员变量       可以访问本类对象的成员变量
    super.成员变量     可以访问父类对象的成员变量
    this.成员方法()     可以访问本类对象的成员方法
    super.成员方法()    可以访问父类对象的成员方法

方法重写:

意义:从父类继承一些方法的时候,该方法不能满足子类的需求,需要重写该方法

注意:

  • 如果父类方法是私有的,则不能够进行重写,即使出现了和父类一样的方法也不是重写,因为子类看不到私有方法。
  • 重写时子类方法的访问权限大于或等于父类的访问权限
  • 只要子类重写了该方法(先判断是不是重写),则调用该方法时,一定执行子类的方法,因为子类重写覆盖了父类的方法。
  • 子类与父类的方法声明必须一模一样:函数的返回值类型 函数名 参数列表都要一样
    重写与重载区别:
    重写:
     父子类中方法一样
    重载:
     同一类中方法名相同参数列表不同,与返回类型无关

    抽象类:abstract

     抽象类一定是个父类,因为抽象类时不断抽取共性需求而来的。
     特点:不能创建对象,只能是子类继承后创建子类对象,除此和其他类并无区别
    抽象方法:
     被abstract修饰,只有方法声明没有方法主体的方法就是抽象方法
    特点:
     只有方法声明没有方法主体
     只能必须在抽象类中
     子类重写类父类的抽象方法,实现了方法主体,这就是方法实现.

  • 一般都有抽象方法,抽象方法没有方法体。
  • 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
  • 抽象方法是给子类准备的,如果子类继承了抽象类则必须重写该类的所有抽方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值