鱼少学习多摸

day19 - static关键字,抽象类,接口

static关键字

  1. 类中直接一个代码块 匿名代码块 用于初始赋值

  2. static修饰的代码块 静态代码块 只执行一次

  3. 构造函数

在声明类的对象时先调用静态代码块 之后是匿名代码块 最后时构造函数方法,且静态代码快只调用一次就失效,之后不再调用

复制代码
 1  //2
 2  {
 3      //匿名代码块(赋初始值)
 4      System.out.println("匿名");
 5  }
 6  //1
 7  static {
 8      //静态代码块(只执行一次)
 9      System.out.println("静态");
10 11  }
12 13  //3
14  public Person() {
15      System.out.println("构造");
16 17  }
18 19  public static void main(String[] args) {
20      Person person = new Person();
21      //静态 > 匿名 > 构造函数
22      Person person1 = new Person();
23 24 25  }
复制代码

 

 

static修饰的是静态变量,不使用static的是非静态变量

同时static可以修饰方法

无法通过类调用非静态变量

复制代码
 1  public class Student {
 2      private static int age;//静态变量
 3      private double score;//非静态变量
 4  5      public void run(){
 6  7      }
 8  9      public static void go(){
10 11      }
12 13      public static void main(String[] args) {
14          Student student = new Student();
15          System.out.println(student.score);
16          System.out.println(student.age);
17          System.out.println(Student.age);
18          //System.out.println(Student.score);
19 20      }
21 22  }
复制代码

 

抽象类

使用abstract修饰类,就变成了抽象类

抽象类中可以写抽象方法也可以写普通方法,但抽象方法必须写在抽象类中。public abstract void xxx()定义抽象方法

抽象类可以由其他类继承,抽象类中所有的方法必须由子类实现,除非子类也是抽象类

 
复制代码
 1 //使用abstract修饰类 就变成了抽象类
 2  public abstract class Action {
 3      //约束,有人实现
 4      public abstract void dosomething();
 5  6      public Action() {
 7  8      }
 9  }
10  抽象类///////////
11  ////////////继承子类
12  public class A extends Action{
13      @Override
14      public void dosomething() {
15 16      }
17  }
复制代码

 

总结:

1  /*
2  抽象类:
3  1. 不能new这个抽象类,只能靠子类去实现它,是一个约束
4  2. 抽象类里面可以写普通方法,抽象方法必须写在抽象类里卖弄
5  抽象类存在构造器嘛?存在
6  抽象类的意义是什么? 将方法抽象出来,让子类实现。提高开发效率
7 8   */

 

 

接口

接口是一种规范,定义的必须由后面的对象遵守

interface定义接口的关键字

public interface xxxxx{} 定义接口

接口中所有的定义都是抽象的

默认是 public abstract类型的(不用再重复写)

接口中定义的属性是静态常量,默认是public static final

 
复制代码
 1 //interface 定义接口的关键字  接口的定义都需要实现类
 2  public interface UserSerbice {
 3      //接口中的所有定义都是抽象的
 4      //默认都是public abstract
 5      int age =99;
 6      //接口中定义的属性是一个静态的常量 省略了public static final
 7      void add(String name);
 8      void del(String name);
 9      void update(String name);
10      void find(String name);
11  }
12 13  接口定义
复制代码

 

定义接口需要一个实现类

实现类需要重写接口的方法,经常以接口名+Impl命名

public class xxxImpl implements 接口名{}(定义)

实现类可以同时实现多个接口,即多继承接口

实现类必须重写接口中的方法

 
复制代码
 1 //实现类需要重写接口中的方法 经常以接口名+impl结尾
 2  //多继承,一个类可以继承多个接口
 3  4  public class UserSerbiceImpl implements UserSerbice,TimeService {
 5  //实现了接口的类,就必须重写接口中的方法
 6  7      @Override
 8      public void add(String name) {
 9 10      }
11 12      @Override
13      public void del(String name) {
14 15      }
16 17      @Override
18      public void update(String name) {
19 20      }
21 22      @Override
23      public void find(String name) {
24 25      }
26 27      @Override
28      public void timer() {
29 30      }
31  }
复制代码

 

总节:

1  接口的作用:
2      1. 是一个约束
3      2. 定义一些方法,让不同的人实现
4      3. 接口中默认的方法都默认是public abstract
5      4. 接口中的常量都默认是 public static final
6      5. 接口不能被实例化,没有构造方法
7      6. 实现接口的类可以伪继承多个接口 使用implement
8      7. 实现接口的类必须重写接口中的

 

 
posted @   北海之上  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
/* 粒子吸附*/
点击右上角即可分享
微信分享提示