面向对象VS面向过程
类和对象的关系
简而言之:对象是对类的实例化
创建与初始化对象
1、使用new关键字创建对象
比如有一个Student类:
那么创建一个Student对象为:
Student xiaoming = new Student()
2、构造器
类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的,且构造器有以下2个特点:
1)必须和类的名字相同
2)必须没有返回类型,也不能写void
3)如果创建了有参构造器,必须要创建一个无参构造器
/**
* 1、一个类即使什么都不写,它也会存在一个默认的和类名一样的构造器
* 2、构造器就是用来创建对象的
* 3、使用new关键字,本质是在调用构造器
* **/
public class Person {
String name;
// 无参构造器
// public Person(){
// //this.name = "张三";
// }
// 有参数的构造器
public Person(String name){
this.name = name;
}
}
封装
封装的作用:
1、提高程序的安全性,保护数据
2、隐藏代码的实现细节
3、统一接口
4、增加了系统可维护
如何封装?
1、隐藏,使用private关键字修饰变量,这样就只能在当前类中被直接访问,其他地方不能直接访问
2、暴露:使用public修饰的get、set方法合理暴露,让其他地方可以通过这2个方法进行访问和修改
public class Student {
// 属性 private关键字表示属性私有
private String name;
private int age;
private char sex;
//提供一些可以操作这个属性的方法
// get 获得这个数据
public String getName() {
return name;
}
//设置这个数据
public void setName(String name) {
this.name = name;
}
**// alt + insert 快捷键自动生成get,set函数**
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(char sex ) {
//数据安全性检查
if(sex == '男' || sex == '女'){
this.sex = sex;
}else{
System.out.println("输入错误");
}
}
}
//对上面student类的调用
public class Demo01 {
public static void main(String[] args) {
Student s = new Student();
// System.out.println(s.name); // 直接访问会报错,因为属性被设置为private
// 通过方法访问
System.out.println(s.getName()); //打印默认值null
s.setName("小明");
System.out.println(s.getName()); //打印小明
//设置性别
//注意:Java中,单引号是字符,双引号是字符串
s.setSex("女");
System.out.println(s.getSex()); //打印男
// s.setSex("女");
// System.out.println(s.getSex());
}
}
注意:Java中,单引号是字符char,双引号是字符串String
idea编辑器的alt + insert 快捷键自动生成相关属性的get,set方法
实体类
实体类应用场景实例如下:
// Student类只负责数据存取
public class Student {
private String name;
private double chinese;
private double