面向对象
面向对象
面向过程 & 面向对象
-
面向过程思想
- 步骤清晰简单,第一步做什么,第二步做什么...
- 面对过程适合处理一些较为简单问题
-
面向对象思想
- 物以类聚,分类的思维模式,思考问题首先会解决问题
- 需要哪些分类然后对这些分类进行单独思考。
- 最后才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,
- 适合处理需要多人协作的问题
-
对于描述复杂的事物,为了从宏观上把握、
-
从整体上合理分析,我们需要使用面向对象的思路
-
来分析整个系统。但是从微观到操作
-
仍然需要面向过程的思路去处理
什么是面向对象
- 面向对象编程(Object-Orient Programming,OOP)
- 本质:以类的方式组织代码,以对象的组织(封装)数据。
- 抽象
- 三大特性
- 继承
- 封装
- 多态
- 从认识论角度考虑:先有对象后有类。类是对对象的抽象。
- 从代码运行的角度考虑是先有类后有对象。类是对象的模板。
回顾方法及加深
-
方法的定义
-
修饰符
-
返回类型
-
break;跳出switch,结束循环和return的区别。
-
方法名:首字母小写+驼峰
-
规范
一、命名规范
1、 项目名全部小写
2、 包名全部小写
3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。
如:public class MyFirstClass{}
4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。
如:int index=0;
public void toString(){}
5、 常量名全部大写
如:public static final String GAME_COLOR=”RED”;
6、所有命名规则必须遵循以下规则:
1)、名称只能由字母、数字、下划线、$符号组成
2)、不能以数字开头
3)、名称不能使用JAVA中的关键字。
二、注释规范
1、 类注释
在每个类前面必须加上类注释,注释模板如下:
/**
- Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.
- FileName: Test.java
- 类的详细说明
- @author 类创建者姓名
- @Date 创建日期
- @version 1.00
*/
2、 属性注释
在每个属性前面必须加上属性注释,注释模板如下:
/** 提示信息 */
private String strMsg = null;
3、 方法注释
在每个方法前面必须加上方法注释,注释模板如下:
/**
- 类方法的详细使用说明
- @param 参数1 参数1的使用说明
- @return 返回结果的说明
- @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/
4、 构造方法注释
在每个构造方法前面必须加上注释,注释模板如下:
/**
- 构造方法的详细使用说明
- @param 参数1 参数1的使用说明
- @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/
5、 方法内部注释
在方法内部使用单行或者多行注释,该注释根据实际情况添加。
如://背景颜色
Color bgColor = Color.RED
-
参数列表:(参数类型 参数名)...
-
异常抛出
-
package com.guoba.Oop;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(...){
//方法体;
return 返回值;
}
*/
public String sayHello(){
return "HelloWorld!";
}
public void print(){
return;
}
public int max(int a, int b){
return a>b ? a: b;//三元运算符
}
public void readFile(String file)throws IOException{
}
}
- 方法的调用:递归
- 静态方法
- 非静态方法
- 形参和实参
- 值传递和引用传递
- this关键字
静态方法,非静态方法练习:
package com.guoba.Oop;
public class Demo02 {
public static void main(String[] args) {
Student.say1();//调用静态方法
Student student = new Student();//非静态方法:调用时需要实例化这个类。
student.say();//使用实例化对象调用该方法
}
}
package com.guoba.Oop;
//学生类
public class Student {
//非静态方法:调用时需要实例化这个类。使用实例化对象调用该方法
public void say(){
System.out.println("学生说话了,使用了非静态方法");
}
//静态方法 static
public static void say1(){
System.out.println("学生说话了,使用了静态方法");
}
}
类与对象的关系
- 类是一种抽象的数据类型,他是对某一类十五整体描述/定义,但是并不能代表某一个具体的事物.
- 动物、植物、手机、电脑.....
- Person类、Pet类、Car类...都用来描述/定义某一类具体的事物应该具有的特点和行为
代码:
package com.guoba.Oop.Demo07;
public class Application {
public static void main(String[] args) {
//类实例化后会返回一个自己的对象!
//张三就是学生类的一个具体实例
Student zhangsan = new Student();
zhangsan.age = 21;
zhangsan.name = "张三";
System.out.println(zhangsan.name + " " + zhangsan.age);
}
}
package com.guoba.Oop.Demo07;
//学生类
public class Student {
//属性:字段
int age;
String name;
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
-
对象是抽象概念的具体实例
- 张三就是人的一个实例
- 能够展现出一个特点,展现出功能的具体的实例
创建与初始化对象
-
使用new关键字创建的时候
-
除了分配内存外,还会进行默认的初始化以及对类构造器的调用。
-
类中的构造器也称构造方法,是在进行创建对象的时候必须要调用的。
-
特点:
- 必须和类名相同
- 必须没有返回类型,也不能写void
-
构造器必须要掌握
内存分析:
小结: