在项目中有什么地方有使用到了 接口 和抽象类。但是只会用,不能说这怎么能行啦。
1.抽象类 2.接口 3. 抽象类和接口的区别
1. 抽象类
1.1 抽象类的定义:
1.2 抽象方法:
1.3 抽象类的属性:
1.1抽象类的定义:
抽象类必须用 public abstract 修饰的(也可以不用写public 因为默认就是)
如果用 private 或者 protected 修饰的话
会出现一下的编译提示:
Illegal modifier for the class inte; only public, abstract & final are permitted
意义:抽象类将事物的共性的东西提取出来,抽象成一个高层的类。
为其子类提供一个公共的类型 封装子类中得重复内容 定义抽象方法,子类虽然有不同的实现 但是定义是一致的
抽象类中:1.可以有抽象方法 ,可以有实际方法。
2. 可以只有抽象方法。
3. 也可以只有实际方法。
4.一个类继承抽象类,必须要实现所有抽象类所有方法,如果子类没有实现父类所有抽象方法那么子类也必须用 abstract 修饰
1.2 抽象方法:
1.抽象方法的修饰符必须为public 或者 protected,如果是private 就会出现以下的(其实抽象方法本身依据类的共性而产生的,用private 修饰也就没有意义)
The abstract method ac1 in type inte can only set a visibility modifier, one of public or protected
1.3 抽象类的属性:
与平常的类没有什么区别。
2.接口:
2.1 接口的定义:
2.2 接口方法:
2.3 接口的属性:
2.1 接口的定义:
意义:对行为抽象。
修饰符:interface
* 接口默认 public abstract 修饰的* 可以不写public 或者 abstract 从这里我们可以看出来 接口是一种极端的抽象形式。
接口不能有构造方法咯。
2.2 接口方法:
1.只有抽象类方法,不存在实际方法。—– 既然是对行为抽象 那么久没有具体的实现。
2.接口方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误)
2.3 接口的属性:
接口中的属性:默认 public static final (我感觉在接口中定义变量并不好,应该专门有一个专门管理常亮的类)
3. 抽象类和接口的区别
1.抽象类可以存在有实现细节的方法并且修饰符可以有protected,public ,接口只能存在抽象方法 修饰符必须是 public abstract。
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
写完咯,还欠一个例子,不想到网上直接找,我想通过项目中的所用技术的解读:
在占一个坑。
引用:
http://www.cnblogs.com/dolphin0520/p/3811437.html
http://peiquan.blog.51cto.com/7518552/1298448
对一些疑问的解答:
1.java中interface的方法默认修饰符是public abstract。
Java Language Specification, 3rd ed. §9.4 Abstract Method Declarations
http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.4
Every method declaration in the body of an interface is implicitly abstract, so its body is always represented by a semicolon, not a block.
Every method declaration in the body of an interface is implicitly public.