[2024.12.31 JavaSE学习]static补充 && 抽象类

static相关补充

  • 在一个类中,有如下几个代码块:
public class MyClass{
    {
	    System.out.println("匿名代码块");
	}
	
	static {
	    System.out.println("静态代码块");
	}
	
	public MyClass()
	{
	    System.out.println("构造方法");
	}
	
	public static void main(String[] args)
	{
	    MyClass myclass = new MyClass();
	}
}
  • 输出的顺序为:
    静态代码块
    匿名代码块
    构造方法
    且static方法第二次就不会显示了,只会加载一次
  • 静态导入包,可以直接调用这个包,如下:
package mypkg.demo01;
import static java.Math.random;
public class Test{
    public static void main(String[] args){
	    System.out.println(random());
	}
}

抽象类

类似C++的纯虚函数

  • 抽象类无法使用new实例化,只能通过子类继承实现,但是抽象类是有构造器的,可以用来进行相关成员变量的初始化
  • 抽象方法必须在抽象类中,抽象类中不一定有抽象方法,也可以有正常方法
  • 抽象方法必须被重写,除非子类也是一个抽象类
  • 意义?
    类似游戏中,创建一个角色,可以先粗略的创建属性,后续便于放里面填充,加快开发效率......

接口

  • 普通类:只有具体实现
  • 抽象类:具体实现和规范(抽象方法)都有
  • 接口:只有规范,自己无法写方法,实现和约束分离

接口的本质是契约,制定好后大家都进行遵守,是Object-Oriented的精髓

  • 接口中的方法都默认为 public abstract,变量默认为public static final的常量
  • 类可以实现多个接口,但是需要重写接口的方法:
public interface UserService{
    void add(String name);
}
public interface UserService1{
    void add1(String name);
}
public class UserServiceImpl implements UserService,UserService1{
    @Override
	public void add(String name)
	{
	    System.out.println(name);
	}
	public void add1(String name)
	{
	    System.out.println(name);
	}
}
  • 接口没有构造方法
posted @ 2024-12-31 03:06  Luna-Evelyn  阅读(14)  评论(0)    收藏  举报