目录
1 总述
1.1 面向过程(OPO)
强调的怎么做, 强调的是功能的行为
1.2 面向对象(OOP)
是一种思想, 强调的是人类在在日常的逻辑思维中采用的思想方法,如抽象、分离、继承、聚合、多态等。
1.3 面向对象的三大特征:
-
封装
-
继承
-
多态
1.4 面对对象有 万物皆对象的说法
因为在Java 中,我们可以将功能,结构等封装到类中,通过类的实例化来实现具体的功能。其中涉及到了 前端网页数据和后端数据库的交互,在交互时,他们都有相对应的类和对象,他们与现实生活中的事件一一对应着。
1.5 每个面向对象整体过程要经历三个步骤
-
创建类
-
类实例化,也就是创建对象
-
调用类方法属性进行操作
1.6 类和对象他们之间的关系
类是对生活中具有一系列的共同属性的事物的抽象
类是对具有共同属性和行为的对象的集合
类与对象的关系, 类是对对象的共同特征的高度概括, 对象是一个个具体的真是存在的实体。
也就是我们经常比喻的类是模板,是图纸,而对象是造出来实体。
1.7 实例说明
在生活中我们的行为活动可以划分成一个人(某个人)或事物(自行车),有什么属性,做了什么事
程序就是为了模拟人类世界,帮助人们处理事情,例如
1、小明骑车出去玩
现实生活 | 程序中 |
---|---|
一个人,交通工具 | 类名:人类,交通工具 |
小明,自行车 | 对象:小明,自行车 |
骑车出去玩 | 方法:出去玩 |
2、12岁的小明去放风筝
现实生活 | 程序中 |
---|---|
人,玩具(风筝也可以,小明的风筝属于风筝中的一种) | 类名:人类,玩具(风筝也可以,小明的风筝属于风筝中的一种) |
12岁 | 小明的属性:12岁 |
小明,风筝 | 对象:小明,风筝 |
放风筝 | 方法:放风筝 |
2 类的组成
2.1属性:
2.1.1 含义
成员变量,初始值有没有都可以,定义在类中方法外面。
2.1.2 书写格式
//变量类型 变量名
String name;
2.2 行为:
2.2.1 含义
包括构造方法和自定义的方法,一般情况下构造方法必须写,如果不写也不会报错,因为虚拟机会默认提供一个无参构造方法。
2.2.2 书写格式
//无参构造器
public 类名(){} //不能有void, 不能有形参
//有参构造器
public 类名(变量类型 变量名){ //同无参构造器一样不能有void, 形参可以有多个,
实参 = 形参;
}
//无参构造器和有参构造器构成了重载
//自定义的方法
public void method(){ //方法名和有无返回值,返回值类型 自己决定
}
2.2.3 构造器的三个调用方法
// 方法一、又称之为匿名调用;
new Animal("波斯猫").show();
// 方法二、正常的通过无参调用类,创建对象,并通过setter方法设置类中成员变量;
Animal an = new Animal();
an.setName("波斯猫");
an.show();
// 方法三、通过有参调用类创建对象,并直接赋值;
Animal an1 = new Animal("波斯猫");
an1.show();
2.2.4 无参构造器和 有参构造器的存在说明
-
类中不提供构造器,虚拟机将自动提供一个无参构造器使用
-
类中提供有参构造器,系统不会自动提供无参构造器
2.2.5 构造器的用途:
-
类的初始化都是调用构造器进行的,也就是说初始化类的时候,构造器中的代码会执行。
-
创建对象用
2.2.6 注意:
-
无参构造器中不能添加形参。
-
构造器的名字和类名要高度保持一致,不然会失效报错。
-
public 可以去掉,但是不建议去掉,去掉后,只有本包内才能调用。以后权限修饰符中会有解释
-
此处的构造方法名称必须和类名相同,不同的话会被认为是书写的方法,那么就要明确void无参数返回值还是某个类型的参数返回值。
2.27 可以改变变量权限的 修饰词
-
final修饰之后,变量成为常量,其他地方无法修改,并且要用全大写书写
-
static修饰后,变量将变成共有属性,类中的每个对象的这个变量都要访问这个数值;
-
this关键字用在方法内部,局部变量和成员变量重复时,this修饰的变量是成员变量
public static void main(String[] args) {
StaticTest.setSchool("河南大学");
StaticTest test = new StaticTest("张三");
StaticTest test2 = new StaticTest("李四");
System.out.println(test.getName()+"..."+ StaticTest.getSchool());
System.out.println(test2.getName()+"..."+ StaticTest.getSchool());
//输出结果是 张三...河南大学
// 李四...河南大学
}
public class StaticTest {
private static String school; //school用static 修饰, 每个对象的 get方法得到的结果都是 school在此改变之前的结果
private String name;
public StaticTest() {
}
public StaticTest(String name) {
this.name = name;
}
public static String getSchool() {
return school;
}
public static void setSchool(String school) {
StaticTest.school = school;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3 一个标准的java bean 类
public class animal{
}
//***这就构成了一个类,但是一般不会这么做,因为没有什么实际意义,把它改成一个抽象类倒是可以的**********
class Animal {
private String name;
public Animal() { //无参构造器
}
public Animal(String name) { //有参构造器
this.name = name;
}
public void show() { //定义的方法
System.out.println(name + "找到了");
}
public String getName() { //提供的getter方法,方便其他地方调用该类中的变量
return name;
}
public void setName(String name) { //提供的setter方法,方便其他类中设置该类中的变量
this.name = name;
}
}