1. 面向对象思想
面向过程思想:就是把关注点放在一件事或一个活动中涉及到的步骤(也就是过程)上的思想(或思维方式)
面向对象思想:就是把关注点放在一件事或一个活动中涉及到的人或事物(也就是对象)上的思想(或思维方式)
面向对象思想的特点:
- 一种更符合人们思考习惯的思想
- 把复杂的事物简单化
- 把人们从执行者变成了指挥者
面向对象的程序开发就是不断的找对象、使用对象、指挥对象做事情的过程
面向对象的思想特征:封装、继承、多态

2. 类的定义和使用
2.1 如何定义一个类

自定义类对象作为参数,属于引用传递,传递的是地址值
2.2 使用变量的规则
第一步:TestStudent这个类的字节文件加载到方法区
第二步:main方法进栈,并从第一行代码开始执行
第三步:第一行使用Student类创建对象,但内存中没有Student类,所以要把Student类的字节文件加载到方法区,然后在栈里创建一个Student类的引用stu,new会向堆内存申请开辟空间,这块空间来存储Student类的成员变量和成员方法,并有默认值
第四步:执行main方法的第2和第3行,给成员变量赋值,执行第4行时,调用study方法,所以study方法进栈。

2.3 局部变量与成员变量
成员变量的位置:类中、方法外
局部变量的位置:方法的参数列表 或 方法内
Java中使用变量,采用就近原则,如果局部变量位置有,就使用;没有就去本类的成员位置找,有就使用;没有就去父类的成员位置找,没有就报错


3. 封装
封装的好处:提高安全性、提高复用性、复杂的事情简单化

3.1 private关键字
private:是一种访问权限修饰符,用来修饰类的成员
特点:被他修饰的成员只能在本类中访问
private一般用来修饰成员变量,public一般用来修饰成员方法
3.2 this关键字
表示对本类对象的引用
4. 构造方法
构造方法的定义:
格式
修饰符 构造方法名(参数列表) {
// 方法体
}
要求
方法名必须与类名相同
没有返回值(可以有return)
没有返回值类型(void也不行)
注意事项
若未提供任何构造方法,系统会给出默认的无参构造
若已经提供任何构造方法,系统不再提供无参构造
构造方法可以重载
public class Phone {
// 构造方法
// 无参构造
public Phone () {}
// 有参构造
public Phone(String brand, String name) {
this.brand = brand;
this.name = name;
}
// 定义成员变量
private String brand;
private String name;
// 成员方法
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class TestPhone {
// main方法是程序的主入口
public static void main(String[] args) {
Phone p = new Phone();
// 给成员变量赋值
p.setBrand("苹果");
p.setName("程序猿");
System.out.println(p.getBrand());
System.out.println(p.getName());
// 调用成员方法
p.call("乔布斯");
System.out.println("--------------------");
Phone p2 = new Phone("华为", "小明");
System.out.println(p2.getBrand());
System.out.println(p2.getName());
}
}
5. JavaBean类

网友评论