面向过程的编程思想
解决问题的时候按照一定的过程流程
以过程为本 复用性较低 增加了很多代码的冗余
比如 把大象装冰箱分三步:
1.开冰箱 2.大象装里面 3.关冰箱
过程已经写死了 要是换成其他动物装冰箱 上述的步骤就不适用 需要重新写
面向对象的编程思想
解决问题的时候按照现实生活中的规律来考虑问题
在解决问题的过程中 考虑的是有多少个对象参与进来
即 实体是动作的支配者 没有实体 动作就发生不了
============================================================
类与对象
类——-抽象笼统的概念 描述一类事物 具有相同的特征(属性)和行为(方法) 比如 人类
人类有名字 有年龄 有性别———静态描述特征———属性
人类能吃饭 能说话 能学习———动态动作行为———方法
对象---具体的事物 比如 人类中一个具体的人<br /> 类中衍生出来的一个具体的个体 应该与自己的类具有相同的特征和行为在计算机中利用面向对象的编程思想来做事<br /> 需要先定义一个类<br /> 若想做事 需要在描述的类中创建一个具体的个体(即对象)出来<br /> 然后由个体(对象)来做事如何在计算机中创建(描述)一个类?<br /> 1.先创建一个类<br /> 2.在类的里面 利用属性或方法去描述这个类<br /> 3.创建一个当前类的对象 让对象调用属性/方法来做事(对象的创建在哪都可以 想在哪里用就在哪里创建)类中的方法-----是用来做事的方法的结构(共七块内容)[ ]中的结构可以没有<br /> 权限修饰符 [特征修饰符] 返回值类型 方法名字 (参数列表) [抛出异常] [{<br />方法执行体(抽象方法可以没有方法体)<br /> }]方法必须存在的结构 返回值类型与参数列表里面的内容不一定要有<br /> 权限修饰符 返回值类型 方法名字(参数列表){<br /> }权限修饰符共有四个 public protected 默认不写 private<br /> <br /> 1.无参数无返回值<br /> 2.无参数有返回值<br /> 3.有参数无返回值<br /> 4.有参数有返回值参数列表可以理解为方法做事情之前需要提供的条件(可以多个)<br /> 返回值可以理解为方法做事情之后得到的一个结果(只有一个)类描述好之后是不可以直接用的<br /> 需要创建当前类的对象 通过new的方式 如 Person p = new Person();
public class Person {//类的范畴要比主方法要大(主方法写在类里头)//这个文件是在计算机内 画的一张图纸//描述计算机里的小人长什么样//属性----静态描述特征//属性有三个必要的组成部分//权限修饰符(必须存在) 特征修饰符(不是必须的) 数据类型 属性名 = 值(可以不赋值 按默认值存在)//若不写明修饰符 就是默认修饰符 访问范围只在同包和本类中public String name;//全局变量public int age;public String sex;//方法-----描述做什么事情//方法的设计需要分析 1.需不需要提供条件(参数) 2.需不需要给别人留下什么结果(返回值)//设计一个方法 用来描述人类可以做吃饭这件事public void eat (){//无参数无返回值System.out.println("吃了一碗饭");}//设计一个方法 用来告诉别人我的名字//若方法规定了返回值类型 方法内必须通过return关键字返回一个值public String tellName(){//无参数有返回值System.out.println("我的名字是");return "小兰";}//描述人可以吃不同的东西public void chiFan(int num,String eatWhat){//有参数无返回值System.out.println("今天吃了"+num+"碗"+eatWhat);}//设计方法 买饮料//条件 钱//返回值 买到的饮料名字public String buyDrink(int money){//有参数有返回值if(money>5){return "红牛";}else{return "矿泉水";}}//line 表示需要花星星的行数 diretion 表示星星的方向//true 表示右直角 false 表示左直角//单分支语法结构如果代码有重复 一定可以优化public void drawStar(int line,boolean diretion){for(int i = 1;i<=line;i++) {if(!diretion){for (int j = 1; j <= line - i; j++) {System.out.print(" ");}}for (int j = 1; j <= i; j++) {System.out.print("*");}System.out.println();}}//主方法是程序的入口 它不属于任何一个类 它属于虚拟机//主方法不是必须要有 可以写在任意类下public static void main(String[] args){/*//创建对象 对象可以创建任意个Person p = new Person();//里面没存有值//在堆内存中产生的元素都有默认值 属性是有默认值的//默认值 name = null age = 0 sex = nullp.name = "小兰";p.age = 18;p.sex = "女";Person p1 = new Person();//Person p1 = p; 相当于把p中的地址复制一份给p1// 此时输出的是两行 小明今年16岁,性别是男p1.name = "小明";p1.age = 16;p1.sex = "男";System.out.println(p.name+"今年"+p.age+"岁,性别是"+p.sex);System.out.println(p1.name+"今年"+p1.age+"岁,性别是"+p1.sex);*///创建一个对象 人类对象Person p = new Person();//2.通过对象 调用方法 让方法按照描述的过程执行一遍p.eat();//通过有无括号来区分是方法还是属性String myName = p.tellName();//有返回值可以不接收 没有返回值的没法接System.out.println(myName);p.chiFan(2,"过桥米线");String drinkName = p.buyDrink(10);System.out.println("买到了一瓶"+drinkName);p.drawStar(6,true);}}
