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);
}
}