面向对象编程
面象过程&面向对象
面象过程(线型思维)
1.步骤清晰简单,第一步做什么,第二步做什么
2.面向过程适合处理一些较为简单的问题
面向对象思想(分类思维)
物以类聚,分类的思维模式,思考问题首先会解决问题需要那些分类,再将这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
什么是面向对象
面向对象编程(OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
抽象
三大特性
封装
继承
多态
从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象
从代码运行角度考虑是先有类后有对象。类是对象的模板
方法的回顾及加深:
方法的定义:
修饰符、 返回类型
break和return的区别:break跳出switch,结束循环。
注意:return后面不能带任何语句,因为return代表方法结束,而且returm的返回值,要和方法的返回值型一致
方法名:注意规范就可以,见名知意的原则
参数列表:(参数类型,参数名),...可变长参数
异常抛出:
修饰符、 返回类型
//HelloWorld 类 public class HelloWorld { //main 方法 public static void main(String []args) { } /** 修饰符 返回值类型 方法名(){ //方法体 return 返回值;
注意:return后面不能带任何语句,因为return代表方法结束,而且returm的返回值,要和方法的返回值型一致 } */ public String say(){ return "hello"; } }
方法的调用:
静态方法、非静态方法、形参和实参、值传递和引用传递、this关键字
静态方法、非静态方法
public class Main { public static void main(String []args) { //如果是调用别的类中的静态方法,那就直接用类名.方法进行调用即可 Stud.she(); //使用类名.方法调用非静态方法 //提示:无法从静态上下文引用非静态方法 she1 //Stud.she1(); //正确非静态方法的调用
//对象的类型 对象的名字 =对象的值 Stud d=new Stud();//创建类对象 d.she1();//使用对象名称.方法进行调用 } } class Stud{
//注意:当两个方法都为静态或非静态是,他们之间是可以互相调用的,如果一个为静态一个为非静态时,他们之间不能互相调用,因为他们的加载时间片不一样 //静态方法:和类一起加载的 public static void she(){ System.out.println("说话了"); } //非静态方法:类实例化之后才存在 public void she1(){ System.out.println("讲话了"); } }
//形参和实参 public class HelloWorld { public static void main(String []args) { //实际参数和形式参数的类型保持一致即可,因为形式参数只是他们的名字,而实际参数才是他们真实的值 int add=add(1,2);//传入实际参数 System.out.println(add);//打印返回的值 } public static int add(int a,int b){//方法中的参数为形式参数,不论我在这个参数列表里写什么参数都可以,只我传进来的实际参数类型和他保持一致就可以 return a+b; } }
public class HelloWorld { //引用传递 public static void main(String []args) { int a =1; System.out.println(a);//1 upd(a);//因为他只是把值传给了方法,在方法中他的值为10,但是方法并没有把值返回来,所以以他的结果还是为1 System.out.println(a);//1 } //返回值为空 public static void upd(int a){ a=10; } }
public class Main { //引用传递:一般传递的是一个对象,本质还是值传递 public static void main(String []args) { Stud stud=new Stud(); System.out.println(stud.name);//unll Main.upd(stud); System.out.println(stud.name);//月亮 } public static void upd(Stud stud){ //stud是一个对象:那个指向的是 Stud stud=new Stud();,所以可以改变 stud.name="月亮"; } } //定义了一个Stud类,有一个属性:name class Stud{ String name; }
类写对象的关系:
创建与初始化对象
使用new关键字创建对象
使用new关键字创建对象,除了分配内存之外,还会给创建好的对象,默认初始化以及对类中的构造器的调用
类中的构造器也叫构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
1.必须和类的名字相同
2.必须没有返回类型,也不能写void
示例:
public class Hlee { public Hlee(){}//默认无参构造器,一个类即使什么都不写都会有一个构造器 public Hlee(int a,int b){}//有参构造器 public static void main(String []args) { } }
注:一个项目只有一个主启动类,所以在创建每个类时,不要直接创建main方法
public class Main { public static void main(String[] args) { //类:抽象,实例化 //类实例化后会返回一个自己的对象 //su对象就是Sube类的具体实例 Sube su=new Sube(); //给实例对象进行赋值 su.name="小白"; su.age=3; System.out.println(su.name); System.out.println(su.age); } } class Sube{ //属性、字段 String name;//null int age;//0 //方法 public void sub(){ System.out.println(this.name+"在学习");//this.name表示:Sube类中的nmae传入的内容 } }
构造器详解:
public class Main { public static void main(String[] args) { Suba sub=new Suba(); System.out.println(sub.name); } } class Suba{ String name; //实例化初始值,让在其他地方new个Suba对象是,直接对象.name时输出的值为构造器中的值 //1.使用new关键字,本质是在调用构造器 //2.构造器一般用来初始化值 public Suba(){ this.name="小白";//this.name表示当前对象的name属性 } //有参构造:一但定义了有参构造,无参构造就必须显示定义 public Suba(String name){ this.name=name; } }
总结:
构造器: 1.和类名相同 2.没有返回值 作用: 1.new本质在调用构造方法 2.初始化对象的值 注意点: 一但定义了有参构造,无参构造就必须显示定义,否则会报错 快捷键: ALL+LNSERT :快速创建构造器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?