面向对象(OOP)
面向对象
面向对象
面向过程 & 面向对象
面向过程思想
- 步骤清晰简单,第一步做什么,第二步做什么...
- 面对过程适合处理一些较为简单问题
面向对象思想
- 物以类聚,分类的思维模式,思考问题首先会解决问题
- 需要哪些分类然后对这些分类进行单独思考。
- 最后才对某个分类下的细节进行面向过程的思索。
- 面向对象适合处理复杂的问题,
- 适合处理需要多人协作的问题
对于描述复杂的事物,为了从宏观上把握、
从整体上合理分析,我们需要使用面向对象的思路
来分析整个系统。但是从微观到操作
仍然需要面向过程的思路去处理
什么是面向对象
- 面向对象编程(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
构造器必须要掌握
内存分析:

小结:


面向对象(OOP)的更多相关文章
- PHP面向对象(OOP)编程入门教程
面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...
- 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...
- php面向对象(OOP)编程完全教程
摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...
- 拖拽系列二、利用JS面向对象OOP思想实现拖拽封装
接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到 ...
- 面向对象(OOP)基本概念
面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...
- python-面向对象-01_面向对象(OOP)基本概念
面向对象(OOP)基本概念 面向对象编程 —— Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 01. 面向对象基本概念 我们之前学习的编程方式就 ...
- [Python_4] Python 面向对象(OOP)
0. 说明 Python 面向对象(OOP) 笔记.迭代磁盘文件.析构函数.内置方法.多重继承.异常处理 参考 Python面向对象 1. 面向对象 # -*-coding:utf-8-*- &quo ...
- PHP面向对象(OOP)编程入门教程链接
PHP官方学习OOP: http://php.net/manual/zh/oop5.intro.php 从其他博主学习:(以下链接来源: http://blog.snsgou.com/post-41. ...
- Python3中面向对象 OOP
Python3中面向对象 OOP 定义: python中通过关键字 class 实现类的定义: class ClassName(object): pass 获取成员变量:ClassName.变量名 修 ...
- 如何吃透Python的面向对象(OOP)
本篇可乐和大家一起来吃透 Python 的面向对象,类和实例. 面向对象(OOP) 解释:面向对象它是一种编程的思想,将现实事物抽象化为编程对象. 举例说明:喝可乐 ① 选择自己根据配方买对应的材料 ...
随机推荐
- KRPano中文教程文档PDF版本下载
KRPano中文教程文档PDF版本下载 下载地址:https://pan.baidu.com/s/1qXIZ2os 感谢KRPano技术解密群小伙伴:斌仔分享 中文文档目录: 概述文件说明krpano ...
- .NET 8 的 green thread 异步模型被搁置了
.NET 平台上的green thread 异步模型实验结果最近出来了,具体参见:https://github.com/dotnet/runtimelab/issues/2398 ,实验结果总结一下就 ...
- JDK8升级JDK11最全实践干货来了
1.前言 截至目前(2023年),Java8发布至今已有9年,2018年9月25日,Oracle发布了Java11,这是Java8之后的首个LTS版本.那么从JDK8到JDK11,到底带来了哪些特性呢 ...
- Go 1.22 中的 For 循环
原文在这里. 由 David Chase and Russ Cox 发布于2023年9月19日 Go 1.21 版本包含了对 for 循环作用域的预览更改,我们计划在 Go 1.22 中发布此更改,以 ...
- Strimzi Kafka Bridge(桥接)实战之三:自制sdk(golang版本)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<Strimzi Kafka B ...
- 圆角android
资源地址 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid an ...
- PackageManager
/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Versi ...
- CUDA C编程权威指南:2.2-给核函数计时
本文主要通过例子介绍了如何给核函数计时的思路和实现.实现例子代码参考文献[7],只需要把相应章节对应的CMakeLists.txt文件拷贝到CMake项目根目录下面即可运行. 1.用CPU计时器计 ...
- [自制工具]简便易用的ADDM报告生成工具
■■ Oracle ADDM简介 ADDM全称是Automatic Database Diagnostic Monitor,是Oracle实现性能自我诊断的最佳利器.它依赖于AWR,我们知道AWR会自 ...
- BGP路由协议学习一
转载请注明出处: 1.BGP的特点: BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新. BGP能够承载大批量的路由信息,能够支撑大规模网络. BGP提供了 ...