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() {

    }
}
posted @ 2021-05-28 13:24  放慢_脚步  阅读(24)  评论(0编辑  收藏  举报