javase学习第六天(面向对象编程)

面向对象编程

类和对象的概念

对象:是指一个具体的事物,它有自己的属性和行为;

类:是对同一种事物的抽象,把它们共有的属性和行为抽离出来,就是类;

方法区:类的描述信息(成员变量和成员方法),.class文件内容;中间有一个静态区域,包含静态方法和静态变量;

栈:即方法栈,由两个名词,压栈(push)、弹栈(pop),局部变量所在区域;

堆:new出来的对象存放区域;

Student stu = new Student()的创建过程:

1、首先在栈空间中为变量stu开辟一个空间;

2、在堆空间中为新创建的对象开辟一个空间;

3、系统为新创建的对象的变量进行默认初始化;

4、对象初始化完成后,把对象的地址赋值给变量stu;

实例变量和局部变量

实例变量:定义在类体中、方法外的变量;

局部变量:属于方法的变量,只在方法内或方法声明上(形参);

存放位置

实例变量:堆内存中,属于对象;

局部变量:栈内,属于方法;

初始值

实例变量:有默认的初始值(0、false、null);

局部变量:没有默认的初始值,必须先定义、赋值,才能使用;

形式参数

基本类型作为形式参数:传值,实际上就是把拷贝一份给形参,形参不论怎么改动,都不影响实参的值;

引用类型作为形式参数:传递的是实参所指向的实例对象或数组,即:传递的是实参的引用(地址值),形参和实参具有相同的引用,所以,形参对应用的改动能立即从实参上看到;

匿名对象

匿名对象,就是没有名字的对象,是对象的一种简化表现形式。

使用情况: 对象调用方法仅仅一次的时候,多次调用的时候,不适合用匿名对象; 作为实际参数传递可以使用匿名对象。

封装

概念:面向对象编程的三个特征之一(封装、继承、多态)。

隐藏对象的属性和实现细节(private修饰),不允许外部直接访问对象的内部信息,而是通过类提供的方法来实现对内部信息的访问,把方法暴露出来public修饰的get()、set()方法,让方法来控制对这些成员变量进行安全的访问和操作。即把变量和方法用private进行修饰。 

好处:

1、让使用者只能通过实现预定的方法来访问数据,从而可以在这个方法内加入逻辑控制,限制对成员变量的不好访问;

2、可以进行数据检查,从而有利于包装对象信息的完整性;

3、隐藏实现细节;

4、便于修改,提高代码的可维护性

案例:

 1 /**
 2 定义一个长方形类rectangle,定义求周长girth和面积area的方法,然后定义一个测试类Test2,进行测试
 3 从键盘接收长和宽
 4 */
 5 import java.util.Scanner;
 6 class Rectangle{
 7     private int length;
 8     private int width;
 9     //set长
10     public void setLength(int len){
11         length=len;
12     }
13     public void setWidth(int wid){
14         width=wid;
15     }
16     //求长方形周长
17     public int getGirth(){
18         return 2*(length+width);
19     }
20     //求长方形面积
21     public int getArea(){
22         return length*width;
23     }
24     
25 }
26 class GetRectangleDemo{
27     public static void main(String[] args){
28         
29     //创建扫描对象
30     Scanner s=new Scanner(System.in);
31     //提示用户输入长度
32     System.out.println("请输入长方形的长:");
33     int length=s.nextInt();
34     //提示用户输入宽?
35     System.out.println("请输入长方形的宽:");
36     int width=s.nextInt();
37     Rectangle rec=new Rectangle();
38     rec.setLength(20);
39     rec.setWidth(10);
40     System.out.println("长方形的周长是:"+rec.getGirth()+"\t"+"长方形的面积是:"+rec.getArea());
41     }
42     
43 }

 

 

 

posted on 2017-03-22 19:59  艺海浮台  阅读(162)  评论(0)    收藏  举报