面向对象的基础
面向对象和面向过程的思想对比
- 面向过程编程
是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的
- 面向对象编程(oop)
是一种以对象为中心的编程思想,通过智慧对象实现具体的功能
-对象
客观存在的事物(万物皆对象)
类和对象
- 类是对现实生活中一类具有共同书写和行为的事物的抽象
- 组成
属性
例如,姓名,年龄…
行为
该事物能做的事
例如,学习,java编程开发
类的定义
类中,方法的外面
去掉Static关键字
步骤
- 定义类
- 编写成员变量
- 编写成员方法
public class 类名{
//成员变量
数据类型 变量;
数据类型 变量;
//成员方法
方法1;
方法2;
}
public class Student{
String name;
int age;
public void study(){
System.out.print("学习")
}
}
创建和使用对象
类名 对象名 = new 类名();
1. 对象名.变量名
2. 对象名.方法名();
Student stu = new Student();
stu.name = "张三";
stu.age = 23;
stu.study();
案例
手机类
package Day7L.Phone;
public class Phone {
String brand;
int price;
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void sendMassage(String name) {
System.out.println("给" + name + "发短信");
}
}
package Day7L.Phone;
public class TextPhone {
public static void main(String[] args) {
Phone ph = new Phone();
ph.brand = "华为";
ph.price = 4500;
System.out.println(ph.brand);
System.out.println(ph.price);
ph.call("张三");
ph.sendMassage("李四");
}
}
成员变量和局部变量
成员变量:类中方法外
局部变量: 方法中的变量
封装
- private关键字
private int age;
public void set(int a){
age = a;
}
public int get(){
return age;
}
-
权限修饰符
-
修饰成员
-
只能在本类中访问
-
用get 变量名()获取
-
用set变量名(参数)设置
this关键字
this.name = name;
就近原则
成员变量和局部变量
成员变量是在全类,局部是方法内部
作用:可以调用本类的成员(变量,方法),解决局部变量和成员变量重名的问题
this:表示所在类对象的引用
- 方法被那个对象调用,this就代表那个对象
封装
- 三个特征:封装,继承,多态
- 隐藏实现细节,仅对外暴露公共的访问方式
private私有只是封装的一种体现
- 将代码抽取到方法中,这是对代码的一种封装
- 把属性抽取到类当中,这是对数据的一种封装
- 封装的常见体现
1.私有成员变量,提供setXxx和getXxx的方法
2.将代码抽取到方法中,这是对代码的一种封装.
3.将属性抽取到类当中,这是对数据的一种封装
- 封装的好处
1.提高了代码的安全性
2.提高的代码的复用性
构造方法
-构建,创造对象的时候,所调用的方法
- 格式
/*
1.方法名与类名相同,大小也要一致
2.没有返回类型,连void都没有
3.没有具体的返回值(不能由return带回结果中的数据)
*/
public Student(){
}
- 执行时机
- 创建对象的时候调用,没创建一次对象,就会执行一次构造方法
- 不能手动调用构造方法
构造方法的作用
- 作用:用于给对象的数据(属性)进行初始化
注意事项
- 构造方法的创建
- 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
- 如果定义了构造方法,系统将不再提供默认的构造方法
案例
package Day7L.Text;
/**
* description:JavaSE teaching
* author:sdjady
* date:2021-01-04
* time:14:24
*/
/*
1. 使用private修饰
2. 构造方法
1.提供一个无参数构造方法
2.提供一个带多个参数的构造方法
3. 成员方法
1.提供每个成员变量对应的setXxx()和getXxx()
2.提供一个显示对象信息的show()
4. 创建对象并为其成员变量赋值的两种方法
1.无参构造方法
2.带参构造方法
*/
public class Text1 {
private String name;
private int age;
public Text1() {}
public Text1(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = 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);
}
}
package Day7L.Text;
/**
* description:JavaSE teaching
* author:sdjady
* date:2021-01-04
* time:14:36
*/
/*
1. 使用private修饰
2. 构造方法
1.提供一个无参数构造方法
2.提供一个带多个参数的构造方法
3. 成员方法
1.提供每个成员变量对应的setXxx()和getXxx()
2.提供一个显示对象信息的show()
4. 创建对象并为其成员变量赋值的两种方法
1.无参构造方法
2.带参构造方法
*/
public class Text2 {
public static void main(String[] args) {
//有参数构造方法
Text1 text2 = new Text1("张三",23);
text2.show();
//无参数构造方法
Text1 text1 = new Text1();
//调用set和get
text1.setName("李四");
text1.setAge(24);
text1.show();
}
}