JavaOOP
OOP(Object Oriented Programming): 面向对象编程
1,编程思想
面向对象:做某一件事情,不需要亲力亲为的,只需要将该事情的步骤整合起来。
面向过程:做某一件事情,是有步骤有过程的,并且每一个步骤都需要自己亲力亲为。
1,什么是面向对象和面向过程
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
1)面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。
例如:公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了。
2)面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。
例如,公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如小明擦玻璃、让小丽扫地、让小郭拖地、让小强倒垃圾等”,这里的“小明、小丽、小郭、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把公司卫生打扫干净了。
2,面向对象思维方式的好处
- 面向对象思维方式是一种更符合人们思考习惯的思想
- 面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。
- 面向对象思维方式将复杂的问题简单化。
3,面向对象的特征
- 封装:保护内部的操作不被破坏;
- 继承:在原本的基础之上继续进行扩充;
- 多态:在一个指定的范围之内进行概念的转换。
类和对象
生活中,先有对象再根据对象的属性和行为抽取出类
程序中,先有类,再通过创建出实例对象
类
class Person{
//类名首字母大写,大驼峰命名 UserName
//属性 -- 成员变量 特点:有默认值 java中没有全局变量的概念
/*
String null
int 0
double 0.0
boolean false
char ''
访问修饰符:
public private protected default 缺省的
基本数据类型
整数类型 内存大小
byte 1
short 2
int 4
long 8
浮点类型
float 4
double 8
字符类型
char 2
布尔类型
boolean 1
字节
1GB = 1024MB
1MB = 1024KB
1KB = 1024Byte
1B = 8bit 8位
*/
public String name; //小驼峰命名
//方法
public void methodName(int aaaa){
int a = 0; //局部变量 ,必须要附初始值
int b = a+1;
}
}
对象
Person p = new Person();
一个java文件中可以写多个类
public class A {
//但是只能有一个public 修饰的类,并且public修饰的类名 必须和文件名一致
}
class B{
}
class C{
}
5,构造方法
Person p = new Person();
//Person() 构造方法
//特点:没有返回值类型,方法名和类名相同
每一个类都会有一个默认的无参构造方法
当写一个有参构造时,无参构造会消失。
//作用,实例化对象
给属性赋初始值
6,方法重载 overload
public Person(){
//无参构造
}
public Person(String name, int age, String sex) {
//有参构造
this.name = name;
this.age = age;
this.sex = sex;
}
Person p = new Person();
Person p = new Person("",1,"");
方法重载的特点:
在同一个类中,方法名相同,参数列表不同(个数,类型,顺序)
与返回值、访问修饰符无关
7,this关键字
public Person(String name, int age, String sex) {
//有参构造
this.name = name; //区别参数和成员变量
this.age = age;
this.sex = sex;
}
this :表示对本类对象的引用
this(); 调用无参构造方法,必须写在构造方法中的第一行
8,static关键字
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的步骤
1,私有化属性
private String name;
private int age;
2,提供的公共方法来实现对隐藏信息的操作和访问(getter/setter)
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;
}
3,在方法中加入控制语句
public void setAge(int age) {
if(age<=0)
this.age=2;
this.age = age;
}