oop
1.定义
-
oop:object oriented programing 面向对象编程
之前:
面向过程:把一个项目放在一个类中去写,把一个事件一步一步去执行。
弊端:
- 代码都在一个类,自上而下,代码耦合度高,后期扩展功能和维护的成本很高
- 代码自上而下执行,代码复用性不高
代码复用,提高工作效率,节约了成本就是好技术
所有提出了面向对象
面向对象:以对象为核心,把这个事件分析出两个对象,通过调用重复的调用其功能。
2.类和对象
- 类:把相同的属性和方法归为一类,类里面有属性和方法。抽象的概念。
- 对象:是类中抽象概念中具体的一个实例。是具体的。
- 先有概念(类),才会有实体(对象)。
类和对象的联系:
- 类里面有属性和方法,如果要调用类中的属性和方法,首先需要创建对象。
- 通过对象可以重复的去调用类中的属性。私有的除外
对象也是一种存储形式:
数组:存储一组相同数据类型的数
对象:可以存储一组不同数据类型的数
3. 访问修饰符
访问修饰符可以用于修饰属性和方法,用于定义属性和方法的访问权限
修饰符 | 本类 | 本包 | 子类 | 其它包 |
---|---|---|---|---|
private(私有的) | OK | no | no | no |
default(默认) | ok | ok | no | no |
protected(受保护的) | ok | ok | ok(有继承关系的其它包下也能用) | no |
public(公有的) | ok | ok | ok | ok |
4.局部变量和全局变量
-
全局变量
-
属性,也叫全局变量或者还可以叫实例变量
//属性,也叫全局变量或者还可以叫实例变量 String name;//姓名 int age;//年龄 char sex;//性别 String studentNo;//学号 double price;//学费
-
-
局部变量
-
创建在方法中的变量叫局部变量
-
局部变量如果和全局变量重名,方法中优先调用局部变量
public void playGame() { //局部变量如果和全局变量重名,方法中优先调用局部变量 int price = 10000; System.out.println("打游戏" + price); }
-
-
this关键字
-
this代表当前对象的引用,this能够调用本类中的属性和成员方法
String name;//姓名 int age;//年龄 char sex;//性别 String studentNo;//学号 double price = 1000;//学费 //行为:叫做方法。 public void study() { System.out.println("学习"); } public void playGame() { //局部变量如果和全局变量重名,方法中优先调用局部变量 int price = 10000; System.out.println("打游戏" + price); System.out.println("打游戏" + this.price); }
-
5.给对象赋值
-
直接通过对象属性赋值
缺点:不安全
-
通过将属性封装,提高数据的安全性
封装:将类中的某些信息封装在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对影藏信息的操作和方法。
封装步骤:
-
将属性private
- get和set方法分别获取值和设置值。
- 示例
private String name;//x姓名 private int age;//年龄 private String classname;//班级 private String hibby;//爱好 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if(age<0 || age > 120) { this.age = 3; }else { this.age = age; } } public String getClassname() { return classname; } public void setClassname(String classname) { this.classname = classname; } public String getHibby() { return hibby; } public void setHibby(String hibby) { this.hibby = hibby; }
-
-
构造方法赋值
构造方法,创建对象的时候就会调用构造方法,用于给的对象初始化值用的。
- 如果没写构造方法,系统底层会默认给你一个无参构造方法
- 如果写了有参构造方法,就不会默认生成无参构造方法
示例:
public class Teacher { private String name;//姓名 private String zhuanye;//专业方向 private String kechen;//教授课程 private int teaherage;//教龄 public Teacher() { super(); } public Teacher(String name, String zhuanye, String kechen, int teaherage) { super(); this.name = name; this.zhuanye = zhuanye; this.kechen = kechen; this.teaherage = teaherage; } }