3.Java值传递与引用传递( 八 )


2)静态方法
public class Student {public void run(){}public static void go(){//静态方法会随类一起加载}public static void main(String[] args) {Student student = new Student();student.run();Student.run(); //这里会报错,因为非静态的方法不能用类直接调用,必须想上面实例化后再调用Student.go();//go这个静态方法可以用类直接调用,与静态属性一样go();//由于静态方法就在这个类里,所以可以什么都不用写,直接访问run();//非静态方法就不行}
3)代码块
public class Student {static {System.out.println("静态代码块");//随类一起加载,所以会被最早执行,先输出,而且只会执行一次}public Student(){System.out.println("构造方法");//最后执行}{System.out.println("匿名代码块");//在构造方法之前输出}public static void main(String[] args) {Student student = new Student();System.out.println("=================");Student student1 = new Student();}/*静态代码块匿名代码块构造方法=================匿名代码块构造方法*/}
如上第二次输出没有了静态方法,因为只执行一次,而其他的只要对象调用了就会执行 。
4)拓展,静态导入包
import static java.lang.Math.random;import static java.lang.Math.PI;public class Student {public static void main(String[] args) {System.out.println(Math.random());System.out.println(random());//导入静态包后可以直接用,不需要Math.了System.out.println(PI);}}
12.抽象类
public abstract class Person {//抽象方法,只有方法的名字,没有方法的实现public abstract void something();}----------------------------------------------------public class Student extends Person{//抽象类的所有方法,继承了它的子类,都必须要实现它的方法,但如果子类是抽象类,则不需要实现父类的抽象方法@Overridepublic void something() {}}
13.接口的定义与实现
接口的本质就是契约,就像人间法律一样,制定好后大家都要遵守,声明接口的关键子是,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能) 。
接口特点:就像一个类一样,一个接口也能够拥有方法和属性,但是在接口中声明的方法默认是抽象的,默认是。接口不能实例化,因为它不存在构造方法 。
为了声明一个接口,我们使用这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现 。接口中的属性默认为final修饰,一般没人会在一个接口里定义一个属性.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法 。
//使用interface关键字,接口需要有实现类public interface UserService {//接口的方法默认是public abstract,默认就是抽象的void add(String name);void delete(String name);//(public static final) int age = 99;//属性默认是public static final修饰}-------------------------------------------------------public interface TimeService {void run();}------------------------------------------------------//类是通过implements来实现接口,它可以实现多个接口//实现了接口的类,就必须实现接口的所有方法,有一个方法没有实现就会报错public class UserServiceImpl implements UserService,TimeService {@Overridepublic void add(String name) {}@Overridepublic void delete(String name) {}@Overridepublic void run() {}}