Java学习Day13

面向对象编程01

1. 面向过程&面向对象

  • 属性加方法=类(物以类聚)

面向过程

  • 线性过程:

  1. 步骤清晰简单,第一步第二步第三步

  2. 面对过程适合处理一些较为简单的问题

面向对象

  • 物以类聚:

  1. 分类的思维模式:思考问题首先会解决问题需要哪些分类,然后对这些分类进行独立的思考,最后才对某个分类下的细节进行面向过程的思索。

  2. 面向对象适合处理复杂的问题,适合处理需要多人协作的问题

import java.io.IOException;
​
//Demo01 类
public class Demo01 {
    //main 方法
    public static void main(String[] args) {
        System.out.println(max(10,20));
    }
​
​
    /*
    修饰符  返回值的类型  方法名(...){
        //方法体
        return 返回值;
    }
     */
    //return 结束方法,返回一个结果,类型有多种,但是要注意类型匹配
​
​
    public String sayHello(){
        return "hello World";
    }
​
    public void hello(){
        return;
    }
​
    public static int max(int a,int b){//形式参数
        return a > b ? a : b;//三元运算符? :
        //理解形式:a是否大于b,若大于则输出a,否则则输出b
​
    }
​
    //数组下标越界: Arrayindexoutofbounds
    public void readFile(String file) throws IOException{
​
    }
}
​

注:

对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。

但是,具体到微观操作,仍然需要面向过程的思路来处理。

2. 什么是面向对象

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

  • 本质就是以类的方式组织代码,以对象的组织(封装)数据

  • 三大特性:封装、继承、多态

  • 根据弹幕大神的一个原则:

  1. 被static修饰的内容会跟随类的加载而加载,所以静态化的内容可以不用实例化就可以直接调用,同时两个静态方法之间也可以相互调用有static的方法就属于静态的,没有static的方法属于实例的(类似于变量)

  2. 同时加载的可以相互调用或者先加载的能调用后加载的, 但是后加载的不能调用先加载的

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

  2. 从代码运行角度是现有类后有对象。类是对象的模板。

public class Demo02 {
    //静态方法 static
​
    public static void main(String[] args) {
       //如果加了static,就可以直接调用了
        //Student.say();//格式:类名.方法名
​
        //如果没加static,就需要实例化这个类 new
        //对象类型 对象名 = 对象值
        //new Student();+alt+enter
        Student student = new Student();
​
        student.say();
    }
​
    //和类一起加载的
    public static void a(){
       // b();//若b方法没有加static,a方法就无法直接调用
        /*
        1. 根据弹幕大神的一个原则:被static修饰的内容会跟随类的加载而加载
        所以静态化的内容可以不用实例化就可以直接调用,同时两个静态方法之间也可以相互调用
        2. 有static的方法就属于静态的,没有static的方法属于实例的(类似于变量)
        同时加载的可以相互调用或者先加载的能调用后加载的
        但是后加载的不能调用先加载的
         */
​
    }
​
    //类实例化之  后才存在
    public  void b(){
​
    }
}
  • 调用的方法

package com.oop.demo01;
​
public class Demo03 {
​
    public static void main(String[] args) {
        int add = new Demo03().add(1, 2);//无static时这么调用new Demo03().add(实参,实参);+alt+enter
        int subtract = Demo03.subtract(1, 2);//有static时这么调用Demo03.subtract(实参,实参);+alt+enter
​
        System.out.println(add);
        System.out.println(subtract);
    }
​
    public int add(int a,int b){//形式参数与实际参数的类型要相对应
        return a+b;
    }
​
    public static int subtract(int a,int b){
        return a-b;
    }
}

3. 回顾方法

(1)方法的定义

  • 修饰符

  • 返回类型

  • break:跳出switch,结束整个循环

  • return

  1. 代表方法结束,return语句后面的代码都无法实现的

  2. return的返回值也需要和方法的类型相同

  • 方法名

  1. 注意规范,按照驼峰原则命名。

  2. 要做到见名知意,方便自己也方便别人阅读。

  • (参数类型,参数名)

  • 异常

//数组下标越界: Arrayindexoutofbounds
    public void readFile(String file) throws IOException{
​
    }

(2)方法的调用:递归

  • 静态方法

  • 非静态方法

  • 形参与实参

  • 值传递和引用传递

  1. Java仅是值传递,值传递的是内容,引用传递的是地址

  2. 方法的作用范围不同,值传递不会修改方法外部的值,引用传递会

  • this关键字

上面两个还存疑,我先把代码附上,后面再看看能不能理解

package com.oop.demo01;
​
//值传递
public class Demo04 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);//1
​
        Demo04.change(a);//1
​
        System.out.println(a);//1
    }//方法内的a与上面定义的a是两个不同的数据,方法内的a的值只在方法内有效,等方法运行结束就会重新变成上面定义的值
​
    //返回值为空
    public static void change(int a){
        a = 10;
    }
}

package com.oop.demo01;
//引用传递的是对象,本质还是值传递
//不知道对象的意思,不知道内存的定义
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.name = "Ym";
​
​
    }
}
​
​
class Person{
    String name;//默认值为null
​
​
}



2022.9.21 星期三

  !!今天我的生日,我很喜欢npy给我送的耳机还有一起吃的蛋糕,这是我第22个生日啦,很开心很幸运到现在遇到的人,每天都能有动力坚持前进是我觉得最难能可贵的了,希望后面能够拥有更好的明天吧哈哈。

  早上学车,下午在课题组,晚上科研的忙碌一天,因为中午没怎么吃饭,导致下午又饿又困,昨天晚上视频又惹npy生气了哈哈,这次确实是不应该,感觉我只是占她那边说话而已就又说错话啦,不过视频的时候确实不太想视频,累死了,视频又信号不太好微信有蹦蹦蹦的提示音,烦死人了!

  感觉她就只是因为这个生气把,借个理由啧啧,真是不懂。

  学车的时候感觉最好就是能够和不同的人,不同专业,不同学校的人聊天了,感觉像是同学一样的亲切又不会尴尬,加油加油,第二次科目二一定要过哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值