面向对象就是拿东西过来做对应的东西。
例如手机,这是一个手机类,这个类可以做很多事情,例如打电话、发短信、看电视等等。而且每部手机都有自己不同的属性,例如内存、cpu、颜色等等。
对象是再class里面创建,再创建的时候,不要对属性赋值(因为每一个这个类型的事物,虽然有相同的属性,但属性值不都是一样的)。
1、对象创建之后需要将属性的权限私有化,使属性类外访问不到,再在类里面提供属性的接口,使可以对属性赋值以及拿到这个属性的值。
2、在创建属性之后,需要对这个对象添加构造方法,构造方法又分无参构造方法和有参构造方法
无参构造格式:对象名(){}
有参构造格式:对象名(属性数据类型 属性...){};
注:如果只写有参构造方法,那么系统默认无参构造方法将失效。即在创建对象的时候必须给属性赋值。在添加了无参构造方法之后,那么可以在创建对象的时候对属性赋值,也可以在创建对象之后,通过属性对外的接口去对属性赋值。
3、属性对外的接口
例如饮水机这个类
那么创建类,并定义这个类的属性(品牌 brand)(颜色 color)(容量 capacity)(模式 model)
public class WaterDispenser {
private String brand;
private String color;
private int capacity;
private String model;
public WaterDispenser() { //无参构造方法
}
//有参构造方法
public WaterDispenser(String brand, String color, int capacity, String model) {
this.brand = brand;
this.color = color;
this.capacity = capacity;
this.model = model;
}
}
此时属性权限都为私有,其他类访问不到,只能在类内访问,那么如果要在类外访问,那么必须建立属性对外的接口(即类外能对这个属性赋值并读取的方法);
例如品牌这个属性:
public String getBrand() { //通过这个类的成员方法,去给这个属性赋值
return brand;
}
public void setBrand(String brand) { //通过成员方法去得到这个这个属性的属性值
this.brand = brand;
}
4、this关键字
使用哪个对象的时候,this就是它本身
例题:1
/*
编写饮水机类 WaterDispenser
定义四个成员变量(品牌 brand)(颜色 color)(容量 capacity)(模式 model)
私有成员变量,提供 setXxx\getXxx 方法
提供空参、带参构造方法
提供成员方法 show - 用于展示出所有成员变量所记录的值
编写测试类 Test
使用带参构造方法创建对象,给属性赋值为(美的,红色,5L,手动净水)
调用show方法执行
将容量获取出来,并判断容量是否大于3L.
*/
public class WaterDispenserTest {
public static void main(String[] args) {
WaterDispenser waterDispenser = new WaterDispenser("美的", "红色", 5, "手动净水");
waterDispenser.showPrint();
if (waterDispenser.getCapacity() > 3) {
System.out.println("该饮水机容量大于3L");
} else {
System.out.println("该饮水机容量小于3L");
}
}
}
饮水机( WaterDispenser)类
public class WaterDispenser {
private String brand;
private String color;
private int capacity;
private String model;
public WaterDispenser() {
}
public WaterDispenser(String brand, String color, int capacity, String model) {
this.brand = brand;
this.color = color;
this.capacity = capacity;
this.model = model;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public void showPrint() {
System.out.println("品牌:" + this.brand);
System.out.println("颜色:" + this.color);
System.out.println("容量:" + this.capacity + "L");
System.out.println("模式:" + this.model);
}
}
题2:
/*
定义项目经理类Manager。属性:姓名name,工号id,工资salary,奖金bonus。行为:工作work()
定义程序员类Coder。属性:姓名name,工号id,工资salary。行为:工作work()
要求:
1.按照以上要求定义Manager类和Coder类,属性要私有,生成空参、有参构造,set和get方法
2.定义测试类,在main方法中创建该类的对象并给属性赋值(set方法或有参构造方法)
*/
public class Test {
public static void main(String[] args) {
Manager manager=new Manager();
manager.setManagerId("123");
manager.setManagerSalary(15000);
manager.setManagerBonus(6000);
manager.managerWork();
Coder coder=new Coder();
coder.setCoderId("135");
coder.setCoderSalary(10000);
coder.coderWork();
}
}
经理类:
public class Manager {
private String managerName; //姓名
private String managerId; //id
private double managerSalary; //工资
private double managerBonus; //奖金
public Manager() {
}
public Manager(String managerName, String managerId, double managerSalary, double managerBonus) {
this.managerName = managerName;
this.managerId = managerId;
this.managerSalary = managerSalary;
this.managerBonus = managerBonus;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
public String getManagerId() {
return managerId;
}
public void setManagerId(String managerId) {
this.managerId = managerId;
}
public double getManagerSalary() {
return managerSalary;
}
public void setManagerSalary(double managerSalary) {
this.managerSalary = managerSalary;
}
public double getManagerBonus() {
return managerBonus;
}
public void setManagerBonus(double managerBonus) {
this.managerBonus = managerBonus;
}
public void managerWork() {
System.out.println("工号为" + this.managerId + " 基本工资为" + this.managerSalary + " 奖金为" + this.managerBonus + " 的项目经理正在努力的做着管理工作,分配任务,检查员工提交上来的代码.....");
}
}
程序员类:
public class Coder {
private String coderName;
private String coderId;
private double coderSalary;
public Coder() {
}
public Coder(String coderName, String coderId, double coderSalary) {
this.coderName = coderName;
this.coderId = coderId;
this.coderSalary = coderSalary;
}
public String getCoderName() {
return coderName;
}
public void setCoderName(String coderName) {
this.coderName = coderName;
}
public String getCoderId() {
return coderId;
}
public void setCoderId(String coderId) {
this.coderId = coderId;
}
public double getCoderSalary() {
return coderSalary;
}
public void setCoderSalary(double coderSalary) {
this.coderSalary = coderSalary;
}
public void coderWork() {
System.out.println("工号为" + this.coderId + " 基本工资为" + this.coderSalary + " 的程序员正在努力的写着代码......");
}
}