第10讲 Java面向对象编程基础(4) 教学目标 主要内容
教学目标 理解类变量、类方法与实例变量、实例方法的概念和区别。 掌握类变量和类方法的使用(即static修饰符的使用)。
主要内容 1、类变量、类方法与实例变量、实例方法简介 2、类变量和类方法使用的注意事项
一、类变量、类方法与实例变量、实例方法简介 1、类变量、类方法的概念 类变量(class variables)、类方法(class methods),指的是用“static”修饰符声明的变量、方法,其地位与类等同,在内存中只有一个地方存放。 2、实例变量和实例方法的概念 实例变量和实例方法指没有用static修饰符修饰的变量和方法。
一、类变量、类方法与实例变量、实例方法简介 3、区别 1)类变量能被由此类创建的所有对象共享。实例变量会被复制在每一个从类产生的实例中。 【例10.1】类变量和实例变量在共享性方面的区别。( JavaProgram\chapter10\src\chapter10\ StaticDemo.java)
一、类变量、类方法与实例变量、实例方法简介 2)类变量的生存期不依赖于对象,相当于C语言中全局变量的作用。其它类可以不用通过创建该类的实例,直接通过类名访问它们,而实例变量则不行。 【例10.2】通过类名直接访问类变量的例子。(源代码见:JavaProgram\chapter10\src\chapter10\ VarDemo.java)
一、类变量、类方法与实例变量、实例方法简介 3)类方法则相当于C语言中的全局函数,其他的类也可以直接通过类名来访问类方法,而实例方法则不行。 【例10.3】通过类名直接访问类方法的例子。(源代码见:JavaProgram\chapter10\src\chapter10\ FunctionDemo.java)
二、类变量和类方法使用的注意事项 1、【例10.4】类变量和类方法的使用。 1)不正确的引用(StaticError.java) public class StaticError { String mystring="hello"; public static void main(String args[]) System.out.println(mystring); } 编译时错误信息: 无法从静态上下文中引用非静态变量 mystring System.out.println(mystring); 错误原因:只有实例方法可以访问实例变量。
二、类变量和类方法使用的注意事项 2)解决的办法一 将实例变量改成类变量。(NoStaticError1.java) class NoStaticError1 { static String mystring="hello"; public static void main(String args[]) System.out.println(mystring); }
二、类变量和类方法使用的注意事项 3)解决的办法二 先创建一个类的实例再使用该变量。(NoStaticError2.java) class NoStaticError2 { String mystring="hello"; public static void main(String args[]) NoStaticError2 noError; noError = new NoStaticError2(); System.out.println(noError.mystring); }
二、类变量和类方法使用的注意事项 2、总结 1)同一个类的实例方法可以访问该类的类变量和类方法。 2)类方法只能访问该类的类变量和类方法,不能直接访问实例的变量和方法。因为对象实例化之前,实例变量不可用,否则编译会出错。
作业 1、类变量和实例变量有什么区别? 2、类变量和类方法在使用过程中有什么需要注意的地方?
下课!