Java笔记--包、抽象类
一、包
1、什么是包?
包本质来说就是文件夹,用来管理类文件的。

2、导包
相同包下的类可以直接使用,不同包下的类需要导包才能使用。

3、如果不同包里面有两个相同名字的类,我们需要使用全类名来创建对象

假如我们创建了一个Scanner类,因为Java中本来就存在Scanner类,这个时候我们要是想键盘录入的话,必须使用全类名。java.util.Scanner。

二、抽象类:抽象类其实就是一种特殊的父类。特殊在其内部可以编写抽象方法。
1、什么是抽象方法呢?
举个例子:
有一个猫对象,其内部有一个吃饭方法(猫吃鱼)。
有一个狗对象,其内部也有一个吃饭方法(狗吃肉)。

它们两个具有相同共性的方法,可以抽取到父类之中,但是父类又对其方法不能准确描述。

这个时候,我们就将父类中的方法干脆不写了,直接加上分号。在前面加上abstract。

这个方法就是抽象方法,但是抽象方法只能存在于抽象类当中,所以我们要在父类的类名前也加上abstract,这个父类就是抽象类。
然后我们在子类中将父类的方法重写。


2、抽象类的注意事项:
<1>抽象类不能实例化
也就是不能创建对象。为什么呢,假设我们创建了一个抽象类,我们就可以根据抽象类的对象去调用抽象方法,但是抽象方法是没有逻辑的,它本身就是描述不清的,所以没有存在的意义。

<2>抽象类存在构造方法
抽象类不能创建对象为什么还存在构造方法?--交给子类,通过super进行访问,前面学习过子类的构造方法中第一句隐藏了一个super( );去调用父类的构造方法,如果不存在父类的构造方法,super( );就没用了。
<3>抽象类中可以存在普通方法
可以让子类继承到然后继续使用。
<4>抽象类的子类
要么重写父类中的所有的抽象方法,要么它本身也是一个抽象类。
