Head First Java 总结(六)

第八章 接口与抽象类

抽象

抽象类

抽象类是无法初始化的类

什么时候使用抽象类?
在现实生活中无法new出一个对象的类,如猫和狗继承自动物Animal,但是Animal并没有现实意义的对象,可以new出一个猫,但却不能new出一个动物来。因此需要将Animal父类抽象。

抽象方法
  1. 抽象的方法代表此方法一定要被覆盖过
  2. 抽象的方法没有实体
  3. 方法抽象,类必须抽象;类抽象,方法可抽象可不抽象
  4. 对于抽象方法的处理:实现继续抽象,转给下一层继承类处理

object类

object类是所有类的父类

方法:
Boolean equals(Object o) 判断两个对象是否为同一个对象(是否是内存中的同一块存储单元)
int hashCode(Object o)返回此对象的哈希值
class getClass(Object o)返回此对象的父类
String toString(Object o)返回类的名称+哈希编码

类型转换
public void go(){
    Dog aDog=new Dog();
    Object sameDog=getObject(aDog);
}

public Object getObject(Object o){
    return o;
}

这段代码实际用到了object类型的多态引用
编译器是根据引用类型来判断有哪些方法可以调用,如:

ArrayList<Dog> a1=new ArrayList<Dog>();
Dog bDog=new Dog();
a1.add(bDog);
Object o=a1.get(0);
o.bark();
.
.
.
...
class Dog{
    .
    .
    .

    public void bark(){
        System.out.println("wang");
    }
    .
    .
    ...
}

以上代码o的引用类型为Object,并没有bark()方法;编译器只管引用的类型,而不是对象的类型。
需要进行类型转换:

Dog d=(Dog)o;
d.bark();

只有在引用变量的类确实有该方法才能调用它。

接口

接口作用:扩展对象功能

接口中的方法都是抽象的,用类实现该接口并实现方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值