Day12-面向对象初识
2024-09-08 19:21:26
面向对象编程
Java的核心思想就是OOP
一.面向过程&面向对象
面向过程思想:
- 步骤清晰简单,第一步做什么,第二步做什么......
- 面对过程适合处理一些较为简单的问题
面向对象思想:
- 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索
- 面向对象适合处理复杂的问题,适合处理需要多人协作的问题
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到为微观操作。仍然需要面向过程的思路去处理。
二.什么是面向对象
面向对象编程(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
}
最新文章
- Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
- php示例代码之类似于C#中的String.Format方法
- 自定义Dialog
- hdu 2079
- paip.提升效率---提升绑定层次--form绑定取代field绑定
- phpBB论坛 代码 语法高亮 模块 Codebox Plus
- 安装完openfire之后打不开的解决方案
- 多态.xml
- Prime Land
- Counting Lines, Words, and Characters with wc
- Eclipse开发Maven项目提示:程序包org.junit不存在解决方案
- HTML5 JavaScript API
- java获得路径的多种方式
- linux 系统shell运行程序不退出
- LeetCode 7. Reverse Integer(c语言版)
- Spring Boot读取配置的几种方式
- ECShop模板原理
- 基于matplotlib的数据可视化 - 柱状图bar
- Android Fragment功能的例子
- PHP autoload自动加载机制