首页 > 代码库 > 第七讲:面向对象编程(二)
第七讲:面向对象编程(二)
向前吧,荡起生命之舟,不必依恋和信泊,破浪的船自会一路开放常新的花朵。
本讲内容:成员变量、方法、方法的重载、构造函数
一、成员变量(类或对象的状态)
(1)、认识成员变量、类变量、实例变量、局部变量、方法参数之间的区别
1、成员变量(field)是没有定义在代码块(包括初始化块、成员方法)中的变量。成员变量是类变量还是实例变量取决于在其声明中是否使用了static关键字。
2、类变量在声明是用了static关键字,它的另一个名字叫静态变量、静态成员变量(static field) 。
3、实例变量是在声明时没有使用static关键字的成员变量,它的另一个名字叫非静态成员变量(non-static field)。
4、定义在代码块里的变量被称为局部变量(local variable)。
5、定义在方法声明中的变量叫方法参数。
区别如下:
public class text { static String s1 = "类变量"; String s2 = "实例变量"; { String s3 = "初始化代码块里的局部变量"; } static { String s4 = "静态初始化代码块里的局部变量"; } // <span style="font-family: Arial;">s5</span><span style="font-family: Arial;">方法的参数和方法里的局部变量</span> public void printString(String s5) { String s6 = "方法里的局部变量"; } // 静态类方法(可以直接被类名所调用) public static void printString() { String s7 = "类方法里的局部变量"; System.out.println(s7); } public static void main(String[] args) { text.printString(); //直接被类名所调用静态类方法 Lei08_1 a=new Lei08_1();//创建对象 a.printString("参数的值");//调用实例方法 } }
(2)、变量的初始化
实例变量一经定义就会有初始值(默认的,第二讲讲到),局部变量定义时不赋初值而直接使用,编译器会报错
public class text { int i; { int j; System.out.println(j);<span style="font-family: Arial;">//会报错</span> } public static void main(String[] args) { } }
二、方法(类或对象的行为)
Java中类的行为由类的成员方法来实现。类的成员方法由方法的声明和方法体两部分组成。
1、修饰符,可选,用于指定谁有权限访问此方法。
2、返回值类型,必选,用于指定该方法的返回值数据类型;如果该方法没有返回值,则要用关键字 void 进行标示。方法的返回值只能有一个。
3、参数列表,可以有0到多个,多个参数之间要用逗号隔开,参数的写法形如:String[] args, int age 这样。
4方法名,必选,命名规则是方法名和变量名的首字母要小写,不要弄个大写方法名出来。
5方法体,可选,
6、大括号,可选,大括号不写的方法叫抽象方法。
注意:属性和方法之间的关系
“状态影响行为,行为影响状态”。如果每个对象都是从同一个类中生成出来,每个对象如果都一摸一样,那么这个世界是不是太无趣了。我们看到上一讲的例子中,小狗的大小属性影响了他叫的方式。通过设置狗大小的方法又改变了它的状态。这些属性和方法的细节上的不同导致了,多姿多彩的对象,我们后面还会讲到更多的技术,也会导致更多的多样性。
三、方法重载 overload
在Java 中允许类定义中多个方法的方法名相同,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载(overloaded ),这种方式就叫做方法重载(method overloading )。方法重载是实现程序多样性的一个重要手段。也可以称作多态的一种表现方式。
class Num{ public void max(int a,int b){ System.out.println(a>b?a:b); } public void max(double a,double b){ System.out .println(a>b?a:b); } public void max (int a,int b,int c){ int max=a>b?a:b; System.out.println(max>c?max:c); } } public class L6 { public static void main(String[] args) { Num a=new Num(); a.max(45, 3); a.max(3.2, 6.5); a.max(8, 9, 2); } }上面的例子说明了参数的个数,类型和顺序任意一项不同就算不同的参数声明
四、构造函数(即构造方法)
在Java中,对象是构造出来的,特意用了一个new关键字来标示这个创建的过程。
class Lion{ private String name; private int age; public Lion() { System.out.println("无参数构造方法"); } public Lion(String name,int age){//有参数构造方法 this.name=name; this.age=age; System.out.println("姓名:"+name+"\t年龄:"+age); } } public class L7 { public static void main(String[] args) { Lion a=new Lion(); Lion b=new Lion("黎开权", 20); } }我们看到创建对象的过程就是执行构造函数的过程,而且也看到构造方法也可以重载。
注意:构造函数或者说构造方法,它不是方法。它们之间的三大区别
1、构造函数没有返回值
2、构造函数和类名相同
3、构造函数不能用final、static、abstract修饰
本讲就到这里,Take some time and enjoy it
第七讲:面向对象编程(二)