java -- 面向对象一
一.面向对象和面向过程
什么是面向过程?在生活中我们如果要做一件事情,事情都是一步一步的去完成,这样的一个思维模式就是一个面向过程的思想。
而什么是面向对象呢?就是我们做一件事情,我们不自己做,我们找一个人帮我们做,最后我们只要等待这个人完成,这就是面向对象的思想。
举一个简单的例子:
/* 假如我要买一部手机,我的工作流程是这样的: 一.面向过程的思想是这样的: 1.首先我们得先确定我们要买哪个牌子的手机 2.确定买哪个手机后,我们可能是要选择去网上买还是去实体店买 3.当我们确定在去实体店买后,我们可能会去多几家店,比比价格 4.最后,我们才会买到我们的手机 5.手机买到手 二.面向对象的思想是这样的: 1.我们就只要确定我们买哪个牌子的手机 2.我们找个人帮我去买手机(中间什么东西我们都不管,都由这个人完成) 3.最后我们拿到我们需要买的手机 ps:这个人就是我们指的对象 */
二.面向对象编程
1.对象
在上述的例子中,我们找了一个人专门帮我们买手机,我们就可以把这个人称为一个对象
这类事物,实实在在存在的个体,也叫类的实例。对象与类的关系可以理解为:对象 is a 类,
例如:dog is an animal,我们就说dog是animal的一个实例。对象使用 new 关键字创建。
2.类
帮我们买手机的人肯定是从事代购行业的人,整个从事代购行业的人的整体,我们称之为一个类
简单概括:现实世界的抽象,或者说是对现实生活中事物的一种描述(属性和方法)
3.类与对象的关系
/* 类:是一组相关的属性和行为的集合 对象:是该类事物的具体体现 举例: 类 学生 对象 班长就是一个对象 */
示例代码:以下是定义了一个类
package com.it_01; public class Phone { //定义属性变量 String brand; //定义价格 int price; //定义颜色 String color; //定义方法 public static void call(String body){ System.out.println("和"+body+"打电话"); } public static void sendMessage(String body){ System.out.println("和"+body+"发信息"); } }
定义好上述的类后,我们就可以使用上述的类了:
package com.it_01; public class PhoneDemo { public static void main(String[] args){ //新建一个对象 Phone ph = new Phone(); System.out.println("ph:"+ph); //输出对应的成员的变量 System.out.println(ph.brand); System.out.println(ph.price); System.out.println(ph.color); System.out.println("--------------"); //改变变量的值 ph.brand = "iphone"; ph.price = 66666; ph.color = "black"; //再次打印成员变量的值 System.out.println(ph.brand); System.out.println(ph.price); System.out.println(ph.color); System.out.println("--------------"); //调用方法 ph.call("小明"); ph.sendMessage("小红"); } }
4.成员变量和局部变量
成员变量和局部变量的关系如下所示:
/* 1.在类中的位置不同 成员变量 类中方法外 局部变量 方法内或者方法声明上 2.在内存中的位置不同 成员变量 堆内存 局部变量 栈内存 3.生命周期不同 成员变量 随着对象的存在而存在,随着对象的消失而消失 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 4.初始化值不同 成员变量 有默认的初始化值 局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。 */
示例代码如下:
package com.it_04; /* * 成员变量和局部变量的区别: * A:在类中的位置不同 * 成员变量:类中,方法外 * 局部变量:方法中或者方法声明上(形式参数) * B:在内存中的位置不同 * 成员变量:堆内存 * 局部变量:栈内存 * C:生命周期不同 * 成员变量:随着对象的创建而存在,随着对象的消失而消失 * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 * D:初始化值的问题 * 成员变量:有默认值 * 局部变量:没有默认值。必须先定义,赋值,最后使用 */ public class Variable { int x; //成员变量 public void show() { int y = 0; //局部变量 System.out.println(x); System.out.println(y); } }
三.面向对象的基本使用方法
1.private关键字
当我们通过对象直接访问成员变量的时候,会存在数据的不安全,可能会出现恶意篡改数据的情况,这样就可能会出现一些非法是数据值的情况
这个时候,我们就要想办法,不能让对象直接访问成员变量,这个时候,我们就需要用到了private关键字了
为了不让其示例对象直接通过 对象.属性名 来使用和修改,而是通过set属性名,get属性名,更安全,这样属性就不会随意的被赋值上任何非法的值了,可以在set属性名的方法中进行控制。
例如:
/* 人都是大于0岁的,一般也没有超过两百岁的人 如果我们这里不这样控制的话,而是采用直接让对象通过属性进行修改的话, 这里的年龄可能就会出现小于0岁的,大于1000岁的情况,因此我们这里需要限制条件,对象只能通过方法来设置年龄,
这样我们就可与在设置方法中加入条件进行控制,就不会出现非法数据的情况了 */
示例代码如下:
1.定义一个学生类
package com.it_03; /* * 学生类 * private: * 是一个修饰符 * 可以修饰成员变量,也可以修饰成员方法 * 被private修饰的成员只能在本类中被访问 * * 针对private修饰的成员变量,我们会相应的提供getXxx()和setXxx()用于获取和设置成员变量的值,方法用public修饰 */ public class Student { String name; //int age; private int age; public void setAge(int a) { // 这里提供的设置控制年龄的条件,人都是大于0岁的,一般也没有超过两百岁的人 if(a<0 || a>200) { System.out.println("你给的年龄有误"); }else { age = a; } } public int getAge() { return age; } public void show() { System.out.println("姓名是:"+name+",年龄是:"+age); } }
2.使用学生测试类来测试:
package com.it_03; /* * 学生类的测试类 */ public class StudentDemo { public static void main(String[] args) { //创建学生对象 Student s = new Student(); s.show(); s.name = "漩涡鸣人"; //s.age = 28; 错误:不能通过对象直接修改成员属性 //s.age = -28; 错误:不能通过对象直接修改成员属性 //s.setAge(-28); //设置不成功,条件不能通过 // s.setAge(28); s.show(); System.out.println("------------------"); } }

浙公网安备 33010602011771号