抽象类
1、什么是抽象类?
类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象,即无法实例化。
2、抽象类属于什么类型?
抽象类也属于引用数据类型。
3-抽象类怎么定义?
public abstract class 类名{
类体;
}
4、抽象类是无法实例化的。
抽象类无法创建对象的,所以抽象类是用来被子类继承的.
public abstract class A{
类体;
}
class B extends A{
}
5、final和abstract不能联合使用,这两个关键字是对立的。
- final修饰的类无法被继承
- abstract修饰的类需要被子类继承
6、抽象类的子类可以是抽象类。
7、抽象类有构造方法
抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
public abstract class A{
public A(){}
public A(int a){}
}
class B extends A{
//public B(){
//super()这一段代码无论写不写都会存在,
//所以在父类中创有参构造方法前,要写上无参构造方法
}
}
8、什么是抽象方法?
抽象方法表示没有实现的方法,没有方法体的方法。
结构:
public abstract void dosome () ;
抽象方法特点是:
1:没有方法体,以分号结尾。
2:前面修饰符列表中有abstract关键字。
9、抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
10、一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆
public abstract class A{
public void a();
public void b();
}
class B extends A{
public void a(){}
public void b(){}
}
接口
1、接口也是一种"引用数据类型"。
2、接口是完全抽象的。
抽象类是半抽象,也可以说接口是特殊的抽象类。
3、接口怎么定义?
[修饰符列表] interface 接口名{}
4、接口支持多继承
一个接口可以继承多个接口。
public interface test { }
interface text{}
class A implements test ,text{
public A(){
super();
}
}
5、接口中包含的内容
接口中只包含两部分内容(没有其它内容):
- 一部分是:常量。
- 一部分是:抽象方法。
public interface test {
public abstract void a();
public static final int num=1;
}
6、接口中所有的元紊都是public修饰的。(都是公开的。)
7、接口中的抽象方法定义时: public abstract修饰符可以省略。
8、接口中的常量的public static final可以省略。
public interface test {
void a();
int num=1
}
9、接口中的方法不能有方法体
接口中的方法都是抽象方法,所以接口中的方法不能有方法体。
10、当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(重写)。
public interface test {
void a();
void b();
}
class A implements test ,text{
@Override
public void a() {
}
@Override
public void b() {
}
}
11、extends和implements共存
extends和implements可以共存,extends在前,implements在后。
public interface test {
}
abstract class text{
}
class A extends text implements test {
}
接口的作用:
面向接口编程,可以降低程序的耦合度,提高程序的扩展力。接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度。)以后进行大项目的开发,一般都是将项目分离成一个模块一个模块的,模块和模块之间采用接口衔接。降低耦合度。
抽象类和接口的区别
- 抽象类是半抽象的。接口是完全抽象的。
- 抽象类中有构造方法。接口中没有构造方法。
- 接口和接口之间支持多继承。类和类之间只能单继承。
- 一个类可以同时实现多个接口。一个抽象类只能继承一个类(单继承)。
- 接口中只能出现常量和抽象方法。
接口一般都是对行为"的抽象。