抽象类、接口
抽象类
-
抽象类关键字:abstract
-
如果子类继承了包含抽象方法的抽象类,那么这个子类就必须要去重写这个父类的抽象方法,否则会报错。-
-
抽象类的所有方法(普通方法和抽象方法),继承了它的子类都必须要去实现它的方法,除非子类也是抽象类,这样就由子类的子类去重写。
-
抽象类不能new出来(无法实例化),只能靠子类去实现它,它只是一个约束。
-
抽象类里可以写普通方法,抽象方法必须写在抽象类里。
-
抽象类没有构造器,这也是为什么它无法实例化的原因。
练习代码:
package www.chen.oop.demo06;
public class Application {
public static void main(String[] args) {
//“抽象”是抽象的;无法实例化
// new Abstract();
A a = new A();
a.doSomething();
a.test();
}
}
package www.chen.oop.demo06;
//abstract 抽象类
public abstract class Abstract {
//抽象方法 只有方法的名字 没有方法的实现!
//约束~有人帮我们实现
public abstract void doSomething();
public abstract void test();
}
package www.chen.oop.demo06;
//如果去继承了包含抽象方法的抽象类,那么子类必须去重写父类的抽象方法
public class A extends Abstract{
@Override
public void doSomething() {
}
@Override
public void test() {
}
}
接口
普通类:只有具体的实现(普通方法);
抽象类:具体实现和抽象方法都有;
声明类的关键字是:class
声明接口的关键字是:interface
-
接口就是用来专门写约束的地方,达到约束方法和实现方法分离的效果,这既是面向接口编程。
-
接口内所有的定义都是抽象的,方法是抽象方法,属性是用final修饰的常量。
-
接口都需要有实现类,一般实现类名称都以:impl结尾,即implements(实现)的缩写。
实现类的关键字:implements
-
要去实现接口的类,就要重写接口类中的所有方法。(定义的属性不用管,一般属性不在接口中去写)
-
虽然java是单继承,但是我们可以通过使用接口,侧面来实现多继承的效果。
练习代码:
package www.chen.oop.demo07;
// 接口 关键字interface 接口都需要有实现类
public interface UserService {
// 为什么public abstract 是灰色的,
// 因为在接口里的所有定义都是抽象的,所以不用再写抽象关键字
//接口内定义的属性都是常量(final)
// public static final int age = 20;
int age = 20;
// public static final int id = 9527;
int id = 9527;
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
package www.chen.oop.demo07;
// 接口的实现(implements):必须把接口的所有方法(约束)全部重写,才不报错
public class UserServiceImpl implements UserService,TimeService{
@Override
public void add(String name) {
}
@Override
public void delete(String name) {
}
@Override
public void update(String name) {
}
@Override
public void times() {
}
@Override
public void query(String name) {
}
}

浙公网安备 33010602011771号