面向对象编程

Java的核心思想就是OOP

一.面向过程&面向对象

面向过程思想:

  1. 步骤清晰简单,第一步做什么,第二步做什么......
  2. 面对过程适合处理一些较为简单的问题

面向对象思想:

  1. 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索
  2. 面向对象适合处理复杂的问题,适合处理需要多人协作的问题

对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到为微观操作。仍然需要面向过程的思路去处理。

二.什么是面向对象

面向对象编程(Object-Oriented Programming,OOP)

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据

抽象

三大特性:

  • 封装
  • 继承
  • 多态

从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。

从代码运行角度考虑是先有类后有对象。类是对象的模板。

三.方法回顾

1.方法的定义

package oop;

//demo01  类
public class demo01 { //main方法
public static void main(String[] args) { } /*
修饰符 返回值类型 方法名(。。。){
方法体
return 返回值;
}
*/
//return结束方法,返回一个结果
public String sayHello(){
return "HelloWorld";
}
public void hello(){
return;
}
public int max(int a,int b){
return a > b ? a : b;//三元运算符
}
}

2.方法的调用

package oop;

public class demo02 {
public static void main(String[] args) {
Student.say(); //非静态方法无法直接调用
//实例化这个类 new
//对象类型 对象名字=对象值
Student student = new Student();
student.say1(); }
//和类一起加载的
public static void a(){
//b();无法调用,报错
}
//类实例化之后才存在
public void b(){ }
}

package oop;

//学生类
public class Student { //静态方法
public static void say(){
System.out.println("学生说话了");
} //非静态方法
public void say1(){
System.out.println("学生说话了");
}
}

3.实参和形参

package oop;

public class demo03 {
public static void main(String[] args) {
//形式参数与形式参数的类型要一一对应
int add = demo03.add(1, 2);
System.out.println(add);
} public static int add(int a,int b){
return a+b;
}
}

4.值传递和引用传递

package oop;

//引用传递:对象,本质还是值传递
public class demo05 {
public static void main(String[] args) {
person person = new person();
System.out.println(person.name);//null
demo05.change(person);
System.out.println(person.name);
}
public static void change(person person){
//person是一个对象,指向的 person person = new person();这是一个具体的人,可以改变属性
person.name="LiLiLiYH";//LiLiLiYH
}
}
//定义了一个person类,有一个属性name
class person{
String name;//null
}

最新文章

  1. Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
  2. php示例代码之类似于C#中的String.Format方法
  3. 自定义Dialog
  4. hdu 2079
  5. paip.提升效率---提升绑定层次--form绑定取代field绑定
  6. phpBB论坛 代码 语法高亮 模块 Codebox Plus
  7. 安装完openfire之后打不开的解决方案
  8. 多态.xml
  9. Prime Land
  10. Counting Lines, Words, and Characters with wc
  11. Eclipse开发Maven项目提示:程序包org.junit不存在解决方案
  12. HTML5 JavaScript API
  13. java获得路径的多种方式
  14. linux 系统shell运行程序不退出
  15. LeetCode 7. Reverse Integer(c语言版)
  16. Spring Boot读取配置的几种方式
  17. ECShop模板原理
  18. 基于matplotlib的数据可视化 - 柱状图bar
  19. Android Fragment功能的例子
  20. PHP autoload自动加载机制

热门文章

  1. Python学习的第三次的总结
  2. win10 打开剪切板失败 拒绝访问 已解决!!
  3. go开发框架推荐
  4. pie-engine-ai项目jenkins.yaml文件
  5. 本地开发环境使用redis
  6. 2022-11-19学习内容-Server端代码编写-Client端代码编写
  7. &以及&&的用法总结
  8. fpga always赋值
  9. easypoi多sheet导出
  10. 压缩打包,tar