public class Test {
public static void main(String[] args) {
Battery battery=new Battery(); Mobile mobile=new Mobile(battery);
mobile.work();
Transformer transformer=new Transformer();//改用线充供电 mobile.set(transformer);//和手机绑定 mobile.work(); } }
通过多态我们轻松的实现了电池供电和线充供电的一致性编程,还记得这叫什么吗?对,就是针对父类编程!
通过这几个例子你有没有发现面向对象编程既灵活又有趣,和搭积木很相象!只要你的思路足够清晰就不会走近Java的迷宫,相反会走进Java圣殿,身在其中,其乐融融!
5、修饰符之static
Static修饰符是Java中最常用的修饰符之一,可以用来修饰类中的成员变量,成员方法,除此以外还可以修饰程序的代码块,称为静态代码块。
具体用法如下
用static修饰的方法称为静态方法,静态方法不需要通过类的实例化就可以直接使用。 例如
package blog;
public class A {
public static void print() {
System.out.println(\静态的打印方法!\ }
public void print1() {
System.out.println(\实例方法的打印方法!\ } }
package blog;
public class Test {
public static void main(String[] args) { A.print();//静态方法可以直接使用类名加方法名
A a=new A();
a.print1();//实例方法必须用对象名加方法名 } }
特别需要注意的是静态方法不能用abstract修饰,因为静态方法必须在本类中提供实现,而abstract方法是在子类中实现,二者自相矛盾。
Static在Java语法中占有很重要的地位,它修饰方法时,表示该方法是类的方法不用依靠某个具体的类的实例,只要完成了类加载,就可以使用该方法。如上面的主方法public static void main(String[] args)就是通过类加载完成方法实现的。因为只要Test类被加载,就不用实例化一个对象,从而直接执行mian方法。
用static修饰的变量称为静态变量
在类加载的过程中完成静态变量的内存分配,可以直接通过类名加变量名直接访问该变量。
静态变量有点类似于C++中的全局变量。 比如
package blog;
public class A {
public static int num=5; public void setNum(int num)
{this.num=num;}
public static void print() {
System.out.println(\ } }
package blog;
public class Test {
public static void main(String[] args) { A.print();//打印num=5 A a1=new A(); a1.setNum(8);
A.print();//打印num=8 A a2=new A(); a2.setNum(3);
A.print();//打印num=3 } }
static变量的作用是用来在类中不同对象的数据共享
static代码块
静态代码块在类加载的时候只执行一次,如果把构造方法看成对象的初始化,则可以把静态代码块看成类的初始化,在代码块中可以初始化类中的静态变量,如 package blog;
public class A {
public static int num; static {num=7;}
@SuppressWarnings(\ public void setNum(int num) {this.num=num;}
public static void print() {
System.out.println(\ } }
在静态代码块中完成静态变量num的初始化,此时num值为7
静态代码块还可以完成一些其他的初始化。在JDBC(一种连接数据库的技术,用Java实现)的应用中可以经常看到!