Java学习day14
抽象类
abstract
特点
- 不能new这个抽象类,只能靠子类去实现它,约束!
- 抽象类中可以写普通的方法
- 抽象方法必须在抽象类中
- 抽象的抽象:约束
//抽象类 ,类 extends :单继承 (接口可以多继承) 插座
public abstract class Action {
//约束-有人帮我们实现
//abstract:抽象方法,只有方法名字,没有方法的实现
public abstract void doSth();
}
//抽象类的所有方法,继承了它的子类,就必须要实现它的方法!
public class A extends Action{
@Override
public void doSth() {
}
}
思考题?
- 存在构造器吗?
- 抽象类存在的意义? 提高开发效率
接口
- **只有规范!**自己无法写方法,专业的约束,约束和实现分离
- 定义的是一组规则
- 接口的本质是契约,法律遵守
- 关键字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();
}
//类 可以实现接口 implements 接口
//实现了接口的类,就需要重写接口中的类
//多继承,利用接口
public class UserServiceImp1 implements UserService,TimeService{
public void add(String name) {
}
public void delete(String name) {
}
public void update(String name) {
}
public void query(String name) {
}
public void timer() {
}
}
作用
- 约束作用
- 定义一些方法,让不同的人实现
- 方法public abstract
- 常量public static final
- 接口不能被实例化,因为没有构造方法
- implements可以实现多个接口
- 必须要重写接口中的方法
内部类
public class Outer {
private int id = 10;
public void out() {
System.out.println("这是外部类的方法");
}
class Inner {
public void in() {
System.out.println("这是内部类的方法");
}
//获得外部类的私有属性
public void getID() {
System.out.println(id);
}
}
public void method(){
//局部内部类
class Inner {
}
}
}
//一个Java中可以有多个class类,但只能有一个public class类
class A {
}
public class Application {
public static void main(String[] args) {
Outer o = new Outer();
//通过这个外部类来实例化内部类
Outer.Inner i = o.new Inner();
i.getID();
}
}
public class Test {
public static void main(String[] args) {
//没有名字初始化类,不用将实例保存在变量中
new Apple().eat();
}
}
class Apple {
public void eat() {
}
}