java基础——代码块、抽象类、接口
static详解和代码块
public class Person {
// {
// //代码块 (匿名代码块),创建对象时,创建,在构造器之前
//可以赋初始值
// }
//
// static {
// // 静态代码块,类一加载就直接执行,永久只执行一次
// }
//2
{
System.out.println("匿名代码块");
}
//1
static{
System.out.println("静态代码块");
}
//3
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("==========");
Person person2 = new Person();
}
}
抽象类
- abstract 修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么海方式就是抽象方法;如果修饰 类,俺么该类就是抽象类。
- 抽象类中,可以没有抽象方法,当时有抽象方法的类,一定要声明抽象类。
- 抽象类,不能使用new关键字来见创建对象,她是用来让子类继承的
- 抽象方法,只是有方法的声明,灭有方法的实现,她是用来让子类实现的。
- 子类继承抽象类,那么久必须要实现抽象类没有实现的抽象方法,否则该子类也要声明抽象类。
//abstract抽象类,本质是类,extends 单继承。(但是接口可以多继承)
public abstract class Action {
//abstract ,抽象方法,只有方法的名字没有方法的实现!
//它是约束,有人帮我们实现方法
public abstract void doSomething();
//抽象类特点:
//1. 抽象类不能被new ,只能被继承,靠子类去实现它;约束
//2. 抽象类中可以写普通的方法
//3. 抽象方法的类,就必须是抽象类
//本质:抽象的抽象:约束
//存在的意义:抽象出来,提高开发效率,可扩展性高
}
=====================================
//抽象类的所有方法,必须要由继承它的子类来实现,除非子类也是抽象的
public class A extends Action{
@Override
public void doSomething() {
}
}
接口
-
普通类:只有具体实现
-
抽象类:具体实现和规范(抽象方法)都有
-
接口:只有规范!自己无法写方法 ~ 专业的约束,实现:约束和实现的分离:
-
接口就是规范,定义的是一组规则,体现了现实世界中“如果你是······则必须能······”的思想。如果你是学生,就必须要学习。如果你是汽车,就必须能跑。
-
接口的本质是契约,就像我峨嵋你人间的法律一样,制定好之后,大家都能遵守。
-
OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(如C++,java,C#),就是因为设计模式所研究的,实际上就是如何合理的去抽象。
声明的关键字是class,声明的接口的关键字是interface
接口的作用:
1. 接口是约束
2. 定义一些方法,让不同的人实现
3. 定义方法都是默认:public abstract
4. 定义的属性都是:public static final
5. 接口不能被实例化~因为接口没有构造方法
6. implements可以是实现多个接口
7. 实现接口的类,必须要重写接口的方法。
//定义的关键字:interface。 接口都需要实现类
public interface UserService {
//属性的定义,public static fianl
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 time();
}
//====================================
//抽象类 :extends
//类 可以是实现接口 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 query(String name) {
}
@Override
public void time() {
}
}