• 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()+"	"+"长方形的面积是:"+rec.getArea());
    41     }
    42     
    43 }

     

     

  • 相关阅读:
    POJ3690:Constellations(二维哈希)
    Codeforces Round #547 (Div. 3) 题解
    Educational Codeforces Round 48 (Rated for Div. 2) CD题解
    Educational Codeforces Round 50 (Rated for Div. 2) C. Classy Numbers
    Codeforces Round #508 (Div. 2) E. Maximum Matching(欧拉路径)
    Codeforces Round #546 (Div. 2) 题解
    Codeforces Round #545 (Div. 2) 题解
    Codeforces Round #544 (Div. 3) 题解
    利用最新Apache解析漏洞(CVE-2017-15715)绕过上传黑名单
    xctf一道反序列化题
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6601773.html
Copyright © 2020-2023  润新知