1、抽象类
抽象类
package com.macong.oop.demo03;
//抽象类 extend:单继承 接口:多继承
public abstract class A {
//约束~有人帮我们实现
//只有方法名字,没有方法体
public abstract void doSomeing();
}
抽象类子类
package com.macong.oop.demo03;
//抽象类的所有方法,由抽象类的子类去实现。除非子类也是抽象类。
public class B extends A{
//子类要重写抽象类方法,对抽象类进行实现
@Override
public void doSomeing() {
}
}
- 1、不能new这个抽象类,只能靠着子类去实现;
- 2、抽象类中可以包含抽象方法和不抽象的方法;
- 3、抽象方法必须包含在抽象类中;
思考:
1、不能new 对象,抽象类存在构造器吗?
回答:有构造器,但是本构造对象
2、 抽象类存在的意义?
回答:一个东西比较复杂,写成抽象类,实际用到直接由子类重写他的方法来实现。
2、接口
- 普通类:只有具体实现
- 抽象类:具体实现和规范(抽象的方法)都有
- 接口:只有规范!(起到约束作用)
接口的作用:
- 约束、 定义一些方法,让不同的人实现
- 方法类型(public abstract) 、属性类型(public static final )
- 接口不能被实例化,接口中没有构造方法。
- implements 可以实现多个接口,对接口进行实现时,必须重写接口中的方法
代码部分:
UserService 接口
package com.macong.oop.demo04;
public interface UserService {
//接口中的所有定义都是抽象的。类型为public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
TimeService接口
package com.macong.oop.demo04;
public interface TimeService {
void time();
}
接口实现
package com.macong.oop.demo04;
//实现接口的类,必须重写接口的方法。
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 query(String name) {
}
@Override
public void time() {
}
}