面向对象编程:这里的对象是现实实体。
核心概念:类、对象(实例)、方法、消息、封装、继承、多态
类是指对事物的抽象
例如一辆汽车,
public class Car{
//设置一个私密对象,汽车的速度
private int speed;
//汽车的两个行为,刹车和启动,判断刹车和启动的方法
public void brake(){
speed-=10;
}
public void boost(){
speed+=10;
}
public void cruise(int newSpeed){
speed=newSpeed;
}
}
创建一个类的通用格式
private
在写Java程序的过程中,有的时候为了避免对数据域的直接修改,应该使用private修饰符将数据域声明为私有的,那么这就称为数据域封装。我们知道,在定义私有数据域的类外的对象是不能访问这个数据域的,但是经常会有客户端需要存取,修改数据域的情况,为了能够访问私有数据域,Java可以使用一个get方法返回数据域的值,为了能够更新一个数据域,可以使用一个set方法给数据域设置新值,通常来讲,get方法称为读取器或访问器,set方法称为设置器或修改器。
set的意思为设置,而get的意思为获取,由此可见get()和set()两个方法分别是用来获取和设置数据的。在使用两方法时一般的方法都是后边加上某个单词来表明将要设置或者获取的功能,比如setAge(),getName() 其含义为设置年龄,获取名字。
Java中的this关键字,其主要作用是当需要给类中的数据进行初始化时,可以通过this来进行赋值,而不用随便定义一个变量来进行赋值,更有利于代码的阅读与理解。
例子:题目
public class Noodle {
/**
* 定义三个属性 面,量,汤
*/
private String name;
private int weight;
private boolean isHaveSoup;
/**
* Alt+insert键生成set get
*这里应该是最后获得name
*/
public String getName() {
return name;
}
/**
*写了这个玩意后,以后修改值,就不用在这边改来改去
*直接在另外一个地方改上传值就行,方便安全不会改错
*/
public void setName(String name) {
this.name = name;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public boolean isHaveSoup() {
return isHaveSoup;
}
public void setHaveSoup(boolean haveSoup) {
isHaveSoup = haveSoup;
}
/**
* 构造方法初始化
*没有返回值和void,这个玩意就是构造方法,作用是创建对象
*特征是:无返回值、与类名相同、默认无参
*/
public Noodle(String name, int weight, boolean isHaveSoup) {
this.name = name;
this.weight = weight;
this.isHaveSoup = isHaveSoup;
}
/**
* 重载:
*方法名和前面一样,参数类型或者个数不同,和返回值无关,使用原因就是对象不同,方法一
*样就会用到上面的方法,但是不能一模一样,如果单独设置就麻烦复杂。
*/
public Noodle(String name, int weight) {
this.name = name;
this.weight = weight;
}
/**
* 让输出变成自己的通过自己给值,这样干就是让输出的时候,选择的输出对象变成自己指定
*/
public Noodle() {
this.name = "麻辣面";
this.weight = 2;
this.isHaveSoup = true;
}
/**
* check方法输出,判断面是不是带汤
*/
void check() {
System.out.println(name);
System.out.println(weight + "两");
if (isHaveSoup == true) {
System.out.println("带汤");
} else {
System.out.println("");
}
}
}
public class NoodleDemo {
public static void main(String[] args) {
Noodle n1 = new Noodle("羊肉面", 2, true);
Noodle n2 = new Noodle("羊肉面", 2);
Noodle n3 = new Noodle();
n3.check();
}
}