继承

继承



对于继承而已,子类会默认调用父类的构造器,但是如果没有默认的父类构造器,子类必须要显示的指定父类的构造器,而且必须是在子类构造器中做的第一件事(第一行代码)

将对象的公共属性和方法写到一个类中,然后一个类继承这个存在公共属性和方法的类,这样就存在了继承

继承让类和类之间产生了关联,并且提高了代码的复用性


继承分为单继承和多继承
单继承:一个类只能继承父类,也就是一个儿子只能有一个父亲
多继承:一个类可以继承多个父类  但是java不支持多继承


如何判断你所写的类可以继承这个父类    
  必须是事物之间存在着所属关系时,才定义继承。   某某属于某某的一种,例如藏獒属于犬类的一种,所以藏獒可以继承犬类


在子类的构造函数中会默认的存在这一条语句  spuer(  )
super(  )是访问父类的无参构造函数


当一个类继承一个父类之后,如果方法名重复,就会被覆盖或重写或复写
当一个方法被覆盖之后 该方法的修饰符的权限要小于等于父类该方法的权限
参与覆盖的两个方法必须保证:返回值类型,参数列表都一样;
构造方法的重载:与返回值类型无关,只要保证参数个数 和 参数类型不一样就可以保证重载。


注意:  当覆盖的方法有静态关键字时,静态的只能被静态的覆盖


1、子类拥有父类非private的属性和方法。
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。


抽象

抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:    abstract void fun();


抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。
因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。


抽象类和普通类的区别:

包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:
(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
(2)抽象类不能用来创建对象。普通类可以被实例化,抽象类不可以。
(3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
(4)一般类可以被继承,也可以不被继承,抽象类一定要被继承,需要其子类覆盖所有的抽象方法子类才可以被实例化。


特点:
 1. 没有方法体的方法是抽象方法,一般定义在抽象类中。
 2. 抽象类和抽象方法必须用abstract关键字所修饰。
 3. 抽象类不可以被实例化。
 4. 抽象类必须由其子类覆盖掉所有的抽象方法后,其子类才可以进行实例化。否则,该子类还是一个抽象类。


抽象类一定是个父类  ,因为他的抽象方法需要子类去实现,就要去继承抽象类
抽象类可以存在构造函数,并且还可以不用定义抽象方法


抽象关键字不能和那些关键字共存。
final:final如果修饰抽象类or抽象方法 ,就把 类 or 方法固定了,不能再改动了!
private:private 是私有,表封装,加了private后,抽象方法将不能被复写。抽象方法就是让子类去实现,写成私有的就没有办法调用。
static:static表示静态的意思,当加了static后,调用静态方法就不需要再创建类的对象了,那就没意思了。


如果一个类中存在抽象方法,那么这个类就一定是抽象类;抽象类不一定存在抽象方法。




接口

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,
使其能被修改内部而不影响外界其他实体与其交互的方式。

接口可以存在变量和方法,但是变量只能是public static final    方法只能是 public abstract  用其他的修饰符就会报错

要让一个类遵循某组特地的接口需要使用implements关键字


特点 :
1. 接口用interface来定义
2. 接口中的成员都有固定的修饰符
3. 接口不能被实例化
4. 接口必须由其子类覆盖了所有的抽象方法,该子类才可以实例化,否则,该子类还是一个抽象类、
5. 接口中的成员都是public修饰的。
6. 一个子类可以有多个接口
7. 没有方法体


接口和抽象的区别

(1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
(2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
        如果接口声明的常量没有加public static final ,系统会默认添加,少添加一个修饰符也会默认添加。
(3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
(4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。



类和对象之间的关系
(1)继承关系
继承关系封装了这样一种逻辑:“XX是一种XX”,只要这东西能说通了,就可以考虑用继承关系来封装它


(2)聚合关系
聚合就是一个整体与部分的关系。我们说“XX是XX的一部分”,只要说得通,那么他们之间的关系就是聚合关系
聚合关系分得再细一点的话就可以分成聚集关系和组合关系
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值