您的位置:首页 > 编程语言 > Java开发

Head First Java 总结(六)

2017-10-14 21:10 274 查看

第八章 接口与抽象类

抽象

抽象类

抽象类是无法初始化的类

什么时候使用抽象类?

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

抽象方法

抽象的方法代表此方法一定要被覆盖过

抽象的方法没有实体

方法抽象,类必须抽象;类抽象,方法可抽象可不抽象

对于抽象方法的处理:实现继续抽象,转给下一层继承类处理

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();


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

接口

接口作用:扩展对象功能

接口中的方法都是抽象的,用类实现该接口并实现方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 接口 抽象