如何给网站做排名优化,响应式网站设计尺寸,wordpress添加打赏功能,五合一网站制作视频教程?一、面向对象和面向过程的编程思想对比 面向过程#xff1a;是一种以过程为中心的编程思想#xff0c;实现功能的每一步#xff0c;都是自己实现的#xff08;自己干活#xff09;。 面向对象#xff1a;是一种以对象为中心的编程思想#xff0c;通过指挥对象实现具体的…一、面向对象和面向过程的编程思想对比 面向过程是一种以过程为中心的编程思想实现功能的每一步都是自己实现的自己干活。 面向对象是一种以对象为中心的编程思想通过指挥对象实现具体的功能指挥对象干活。
面向对象和面向过程是相辅相成的考虑问题的时候通常采用面向对象的思想解决问题的时候通常采用面向过程的思想。
一个注重整体一个注重细节。
举例1吃一盘菜。
面向过程所有的步骤我们都需要关心都需要知道是如何实现的。重点在于过程。
面向对象先思考谁可以干炒菜这件事情。我发现女朋友可以干这件事情饭店里面的厨师也可以干这件事情谁可以干就让谁去干我们不关心过程只关心结果。
利用面向对象思想可以指挥女朋友去炒菜也可以指挥厨师去炒菜。
举例2洗衣服
面向过程每一步都需要我们自己关心要先泡衣服再洗衣服再拧干再晾起来等等。重点在于过程。
面向对象先思考谁可以干洗衣服这件事情。我发现女朋友可以干这件事情洗衣机也可以干这件事情谁可以干就让谁去干我们不关心对象是如何洗衣服我们不关心过程只关心结果。
利用面向对象思想可以指挥洗衣机去洗衣服也可以指挥女朋友去洗衣服。 二、面向对象思想的好处
不需要我们去干了直接指挥对象做事情我们从实现者变成了指挥者
比如我们要获取一个随机数我们没有自己书写数学中的随机算法而是思考在java中谁可以干这件事发现Random可以干这件事情那我们就让Random去做我们不关心实现的过程只关心最终的结果。
面向对象不关心过程只关心结果。
三、类和对象
类和对象的关系
什么是对象 客观存在的事物皆为对象 所以我们也常说万物皆对象。
什么是类 类是对客观世界中的一类具有共同属性和行为的事物的抽象。
类与对象之间的关系
可以将类理解成一张设计图根据设计图可以创建出具体存在的事物。即根据类去创建对象。
类是对事物的一种描述对象则为具体存在的事物。
类由什么组成 属性指事物的特征例如手机事物品牌价格尺寸 行为指事物能执行的操作例如手机事物打电话发短信
类的定义
类的组成是由属性和行为两部分组成 属性在类中通过成员变量来实现类中方法外的变量 行为在类中通过成员方法来实现和前面的方法相比去掉static关键字
类的定义步骤
① 定义类
② 编写类的成员变量
③ 编写类的成员方法
public class Student {// 属性 : 姓名, 年龄// 成员变量: 跟之前定义变量的格式一样, 只不过位置发生了改变, 类中方法外String name;int age;// 行为 : 学习// 成员方法: 跟之前定义方法的格式一样, 只不过去掉了static关键字.public void study(){System.out.println(学习);}
}
对象的创建和使用 创建对象的格式 类名 变量名 new 类名(); 此时的变量名也叫做对象名。 调用成员的格式 对象名.成员变量 对象名.成员方法();
public class TestStudent {/*创建对象的格式:类名 对象名 new 类名();调用成员变量的格式:对象名.变量名调用成员方法的格式:对象名.方法名();*/public static void main(String[] args) {// 类名 对象名 new 类名();Student stu new Student();String name; nullint age; 0 // 对象名.变量名// 默认初始化值System.out.println(stu.name); // nullSystem.out.println(stu.age); // 0
stu.name 张三;stu.age 23;
System.out.println(stu.name); // 张三System.out.println(stu.age); // 23
// 对象名.方法名();stu.study();// com.itheima.object1.Studentb4c966a// 全类名(包名 类名)System.out.println(stu);}
} 案例 手机类的创建和使用
需求 首先定义一个手机类然后定义一个手机测试类在手机测试类中通过对象完成成员变量和成员方法的使用
分析 成员变量品牌, 价格 成员方法打电话, 发短信 示例代码
public class Phone {// 品牌, 价格String brand;int price;// 打电话, 发短信public void call(String name){System.out.println(给name打电话);}public void sendMessage(){System.out.println(群发短信);}
}
public class TestPhone {public static void main(String[] args) {// 1. 创建对象Phone p new Phone();// 2. 给成员变量进行赋值p.brand 大米;p.price 2999;// 3. 打印赋值后的成员变量System.out.println(p.brand ... p.price);// 4. 调用成员方法p.call(阿强);p.sendMessage();}
}
四、一个对象的内存图 五、二个对象的内存图 六、成员变量和局部变量的区别
故事记忆法把这五个特点编成一个小故事去记忆。
小明家养了一条狗而且这条狗是一条母狗。有一天母狗怀小狗了。
小红跟小明说你家的狗生了吗
小明说未生出。
未谐音记忆位置
代码中位置不同
成员变量在是类中方法外 ; 局部变量在方法里面或者方法声明上形参。
内存中位置不同
成员变量在堆里面中对应的对象中的; 局部变量在栈里面的。
生
生命周期
成员变量跟对象有关的。当对象在堆中的空间被开辟出来后成员变量就存在了。当对象被垃圾回收器回收从内存中消失的时候成员变量就消失了。
局部变量跟方法有关的。当方法被调用进栈的时候局部变量就存在了。当方法里面的代码执行完毕了就要出栈一旦出栈方法里面的局部变量就会从内存中消失。
作用范围
成员变量整个类中有效 ; 局部变量只在当前的方法中有效。
出谐音记忆初始化
成员变量有初始化值。
局部变量没有初始化值的想要使用必须要先赋值才能使用。
七、private关键字
private关键字和public关键字
都是权限修饰符 private私有的可以修改成员变量和方法一旦修饰后只能在本类中使用 public公共的可以修饰成员变量和方法一点修饰后可以在人员地方使用
为什么要用private修饰
如果没有用private修饰那么在外界可以获取成员变量的值也可以直接对成员变量赋值太危险不安全容易把不合理的值赋值给成员变量
为什么要写get和set方法
set方法是给成员变量赋值的可以在set方法中写过滤条件
/*学生类*/
public class Student {//成员变量private String name;private int age;//提供get/set方法public void setAge(int a) {if(a0 || a120) {System.out.println(你给的年龄有误);} else {age a;}}public int getAge() {return age;}
}
/*学生测试类*/
public class StudentDemo {public static void main(String[] args) {//创建对象Student s new Student();//给成员变量赋值s.name 林青霞;s.setAge(30);}
}
八、就近原则
当局部变量跟成员变量重名的时候在使用时优先使用距离比较近的那个变量
public class Student {//姓名 和 年龄private String name;private int age;//name的get和set//起变量名的时候需要见名知意//就近原则//当局部变量跟成员变量重名的时候//优先使用距离最近的那个变量public void setName(String name){//此时有了一个局部变量name跟成员变量重名//那么下面这行代码在使用name的时候优先使用距离最近的name//其实就是把形参name的值再赋值了给自己。//在这个过程根本没有成员变量name的参与name name;}public String getName(){//此时没有叫做name的局部变量//所以下面的return的时候使用的是成员变量namereturn name;}//age的get和setpublic void setAge(int age){age age;}public int getAge(){return age;}
}
九、this关键字
解决就近原则导致的问题
当成员变量和局部变量重名的时候我们可以在成员变量的前面加一个前缀this.
一旦加上了this.变量就表示当前变量使用成员位置的变量。
public class Student {private String name;private int age;
public void setName(String name) {this.name name; //这时候使用d饿就是成员变量的name}
public String getName() {return name;}
public void setAge(int age) {this.age age;}
public int getAge() {return age;}
public void show() {System.out.println(name , age);}
} 十、封装思想
面向对象的三大特征之一封装、继承、多态封装就是隐藏该隐藏的暴露该暴露的。
封装的好处通过方法来控制成员变量的操作提高代码的安全性把代码用方法进行封装提高代码的复用性。
十一、构造方法
构造方法的格式和执行时机 格式注意 : 方法名与类名相同大小写也要一致 没有返回值类型连void都没有 没有具体的返回值不能由retrun带回结果数据 执行时机 创建对象的时候调用每创建一次对象就会执行一次构造方法 不能手动调用构造方法。 手动调用指的是构造方法不能像其它方法一样通过对象名.方法名调用。 示例代码
class Student {private String name;private int age;//构造方法public Student() {System.out.println(无参构造方法);}public void show() {System.out.println(name , age);}
}
/*测试类*/
public class StudentDemo {}
构造方法的作用用于给对象的数据属性进行初始化
public class Student {/*格式:1. 方法名需要跟类名相同, 大小写也要一致2. 没有返回值类型, 连void都没有3. 没有具体的返回值(不能由return带回具体的结果)*/
private String name;private int age;
// 1. 如果一个类中没有编写任何构造方法, 系统将会提供一个默认的无参数构造方法public Student(){}
// 2. 如果手动编写了构造方法, 系统就不会再提供默认的无参数构造方法了public Student(String name, int age){this.name name;this.age age;System.out.println(我是Student类的构造方法);}public Student(String name){this.name name;}public void show(){System.out.println(name ... age);}
}
public class TestStudent {public static void main(String[] args) {Student stu1 new Student(张三,23);stu1.show();Student stu2 new Student();}
}
十二、一个类的标准创建方式
/*JavaBean类: 封装数据*/
public class Student {private String name;private int age;
//无参构造方法public Student() {}
//全参构造方法public Student(String name, int age) {this.name name;this.age age;}
//get/set方法public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}
}public class TestStudent {public static void main(String[] args) {// 1. 无参数构造方法创建对象, 通过setXxx方法给成员变量进行赋值Student stu1 new Student();stu1.setName(张三);stu1.setAge(23);stu1.show();// 2. 通过带参数构造方法, 直接给属性进行赋值Student stu2 new Student(李四,24);stu2.show();}
}