抽象类
在类中使用abstract关键字
public abstract class Action {
}
// 抽象类 extends 单继承 (接口可以多继承)
public abstract class Action {
// 约束,有人帮我们实现
// abstrct 抽象方法,只有方法名字,没有方法的实现
public abstract void doSomething();
}
// 抽象类的所有方法必须由子类实现
// 继承抽象类的子类一定要实现他所继承类的方法 重写
public class A extends Action {
@Override
public void doSomething() {
}
}
特点:抽象的抽象
- 不能new抽象类,只能靠子类去实现:约束
- 抽象类中可以写普通方法
- 抽象方法必须在抽象类中
思考
-
不能new,他存在构造器吗? 存在的
-
抽象类存在的意义
提高开发效率
接口
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有
接口:只有规范,自己无法写方法;约束和实现分离
面向接口编程
接口的本质是契约,像是社会中的法律一样
声明接口的关键字:interface
// 接口都需要有实现类
public interface UserService {
// 接口中定义的属性都是常量 public static final
int age = 99;
// 接口中的所有定义都是抽象的 public abstract
void add(String name);
void delete(String name);
void update(String name);
void query(String name);
}
public interface TimeService {
void timer();
}
// 抽象类:extends
// 类可以实现接口 implements 接口
// 实现了接口的类,必须要重写接口的方法
// 接口实现多继承
public class UserServiceIml 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 timer() {
}
}
接口的作用
- 约束
- 定义一下方法,让不同的人实现
- public abstract
- public static final
- 接口不能被实例化,接口中没有构造方法
- implements可以实习多个接口
- 必须要重写接口中的方法
内部类
成员内部类
public class Outer {
private int id = 10;
public void out(){
System.out.println("这是外部类的方法");
}
public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
// 获得外部类的私有属性,私有方法
public void getID(){
System.out.println(id);
}
}
}
public class Application {
public static void main(String[] args) {
// 内部类
// new
Outer outer = new Outer();
// 通过这个外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.in();
inner.getID();
}
}
package com.zepei.oop.demo16;
public class Outer {
}
// 一个java类中可以有多个class类,但是只能有一个public class
class A{
}
静态内部类
局部内部类
public class Outer {
// 局部内部类
public void method(){
class Inner{
public void in(){
}
}
}
}