面向对象编程
OOP :Object Oriented Programming
1. 类与对象
类: 是群体性概念,描述一类事物共有的属性与行为
对象:是类在现实生活中 一个个实实在在的个体
示例:
/**
用于描述学生信息
* 学生共有的属性与行为
*/
public class Student{
/**
* 学生姓名
*/
public String sname;
/**
* 学生手机号
*/
public long stuTelno;
/**
* 学生年龄
*/
public int studentAge;
/**
* 学生专业
*/
public String studentMajor;
}
StudentTest
public class StudentTest {
public static void main(String[] args) {
//描述我与同桌两个学生个体
//创建学生对象
//数据类型 变量名 = 值;
int a = 10;
//数据类型 对象名 = 值;
Student student1 = new Student();
student1 = "SunShenshen";
student1.studentAge = 20;
student1.studentMajor="计算机";
student1.studentTelno = 184398404L;
Student student2 = new Student();
student2.studentName = "LiuBaohe";
student2.studentAge = 21;
student2.studentMajor = "计算机";
student2.studentTelno = 184934893L;
System.out.println(student2.studentMajor);
}
}
- 内存分配图 (重点)
存在的问题
耦合性较高、可维护性比较差 : 修改Student成员变量名,其他类中的属性 也要修改
安全性较低: Student类的元信息(属性)暴露出去
解决:
1. 访问权限
* public : 公共的,所有的类都能访问
* private : 私有的, 只有本类能访问
2.set 方法 给属性赋值
get 方法 获得属性值
Student
public class Student {
/**
* 学生姓名
*/
private String sname;
/**
* 学生手机号
*/
private long stuTelno;
/**
* 学生年龄
*/
private int studentAge;
/**
* 学生专业
*/
private String studentMajor;
//给学生姓名赋值
public void setStuName(String name){
sname = name;
}
//给学生年龄赋值
public void setStudentAge(int age){
studentAge = age;
}
//给学生手机号赋值
public void setStudentTelno(long telno){
stuTelno = telno;
}
//给学生专业赋值
public void setStudentMajor(String major){
studentMajor = major;
}
}
StudentTest
Student student1 = new Student();
student1.setStuName("SunShenshen");
student1.setStudentAge(20);
student1.setStudentMajor("计算机");
student1.setStudentTelno(138938493493L);
/*
public void setStuName(String name){
stuName = name; // 等价于 student =name = "SunShenshen"
}
*/
-
语法:
创建对象
// 类类型 Student s1 = new Student();
类类型 对象名 = new 类类型();//访问对象的属性 s1.studentName = “Tom”
对象名.属性名//访问对象的方法 s1.setName(“Tom”)
对象名.方法名 -
封装
数据的安全性、耦合性
具体体现: 访问权限(public - private )
set 、get
-
this关键字
this : 当前对象
this.属性 // 当前对象的某一个属性
this.方法 // 当前对象的方法 -
方法
结构
访问权限 + [static | final] + 返回值 + 方法名 + 参数列表 + 异常 + 方法体
目前需要掌握的:
访问权限 + 返回值 + 方法名 + 参数列表 + 方法体public class Student{
public int getAge(){ } public void setAge(int age){ // age 形式参数(形参),作用域范围 就当前方法 }
}
Student stu = new Student();
stu.setAge(10); //实际参数,实参
面向对象再次理解
public class Phone{
private String phoneName;//手机名称
private float phonePrice;//手机价格
//set get
//打电话
public void call(){
}
}
public class PhineTest{
public static void main(String[] args){
// 手机所有的参数信息 都是从 手机对象 身上获得的
Phone p1 = new Phone();
p1.setPhoneName("Huawei P30");
p1.setPhonePrice(4288);
String pname = p1.getPhoneName();
float pprice = p1.getPhonePrice();
p1.call(); // 这个p1 华为手机 调用 打电话功能 对象的行为
Phone p2 = new Phone();
p2.setPhoneName("Iphone X");
p2.setPhonePrice(5288);
String pname = p2.getPhoneName();
float pprice = p2.getPhonePrice();
p2.call(); // 这个p2 iphone手机 调用 打电话功能 对象的行为
}
}