JAVA中的包,抽象类
什么是包
java中的package就是一个类库单元,包内含有一组类,它们在单一的名称空间之下被组织在了一起,这个名称空间就是包名
src
dao------>数据库相关的
model------>>实体内容
service----->业务
util-------->工具
包的作用
1.把功能相似或相关的类或接口组织在一个包中,方便类的查找和使用
2.如同文件夹一样,包也采树形目录的存储方式,同一个包中不能有两个同名的类,不同的包可以存放同名的类
3.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类
包的声明
package pkg1[pkg2[pkg3]]
包的引用
包的使用其实就是在一个java类中使用其他包中的java类
import pkg1[.pkg2[.pkg3]].<classname>|*;
pkg1,pkg2,pkg3为文件系统中的文件夹名称,并存在上下级目录关系
classname代表所要引入的指定的类
*代表引入此包下所有的类
抽象类
在面向对象的领域一切都是对象,同时所有的对象都是通过类描述的,但是并不是所有的类都只是来描述对象的,如果一个类没有足够的信息
来描述一个具体的对象,而需要其他具体的类在支撑补充它,那么这样的类我们称它为抽象类
比如new Animal(); 动物对象但这个Animal什么样并不清楚,没有一个具体的动物概念,所以它就是一个抽象类
定义
使用abstract 来定义一个抽象类;同样也可以定义抽象方法(没有方法体)
如何使用
1.抽象类必须通过其子类才能实例化成对象
2.子类继承父类后重写抽象方法(具体)或 如果不能重写的话定义子类也为抽象类
抽象类的注意事项
1.含有抽象方法的类是抽象类
2.抽象类不一定有抽象方法
3.抽象类不能直接创建对象,必须通过子类实现,所以abstract不能和final一起修饰类
(因为final不可以被继承,abstract必须被继承)
4.abstract不能与static,final并列修饰同一个方法
Animal类
package model; //抽象类 public abstract class Animal { private String name; //抽象方法,没有方法体 public abstract void cry(); }
Dog与Cat类
package model; public class Dog extends Animal { //子类重写父类的方法 @Override public void cry() { System.out.println("dog 汪汪汪........."); } }
package model; public class Cat extends Animal { @Override public void cry() { System.out.println("cat 喵喵喵........"); } }
Test类(测试代码)
package test; import model.Animal; import model.Cat; import model.Dog; public class Test02 { public static void main(String[] args) { //通过子类实例化对象 //多态 Animal dog = new Dog(); Animal cat = new Cat(); dog.cry(); cat.cry(); } }