2022-07-18 第九组 韩文清

本文深入解析了Java中的面向对象概念,通过实例讲解了类与对象的关系,面向过程与面向对象的区别,以及封装、继承、多态和抽象等面向对象特性。还涉及了数据类型、内存模型、构造器和方法重载等内容,适合初学者理解面向对象编程的基础概念。
摘要由CSDN通过智能技术生成

                                                             Java面向对象

1.java是一门面向对象的编程语言,在java中,万事万物皆对象;

(在Linux中万事万物皆文件)

2.面向过程和面向对象

面向过程:就是分析出实现需求需要的步骤,通过一些方法一步一步实现

面向对象(行为化):可以把整个需求按照特点,功能划分,把这些存在共性的部分封装成类(类实例化之后才是对象),让对象去解决问题。

*举个例子:
     七夕,你想送给女朋友一个包

面向对象:先找个店,买个包,不管是商家还是包,都是现实中真实存在的事物

 这个商店或者是包,就可以称为对象,在整个你去买包或者是商家买包,我们都忽略了包是怎么加工的?

面向过程:找到原材料,字节切割,自己缝制,每一个工序自己干。

 其实,高级的编程语言,会向着人的思考靠近

例子  :准备开个4S店,需要场地,车辆,

  1. 先说说怎么用代码怎么描述一辆车

    1. 描述信息:属性,从代码的角度来说就是变量,如品牌brand颜色color长度,宽度,价格

  2. 问题又来了,怎么才能描述好几个车,这时就可以使用面向对象来使用,车比较多可能就需要很多的数组来维护车的信息。

  3. 这时我们就要用面向对象的思想,我们要将车的属性封装为一个对象。

  4. 代码展示如下

  5. package com.jsoft.morning;
    
    public class Car {
        /*
        * 我们要造车了,必须有一个图纸
        * 根据图纸,可以造一百台车
        * 图纸就是描述车的具体信息,对车的信息的封装
        * 封装: 1.代码层面 2.思想层面*/
        //车的品牌  只声明  不赋值
        String brand ;
        // 颜色
        String color;
        // 长度
        String length;
        /*造车的图纸画完了,
        * 这个类,描述汽车属性的类:
          有了图纸,就去造车*/

    代码展示:

  6. package com.jsoft.morning;
    
    public class Dog {    //创建类
        String name;      //定义属性
        String color;
        int ages;
    
    }
    
    
    package com.jsoft.morning;
    
    public class ch06 {
        public static void main(String[] args) {  //定义一个main方法
            Dog dog = new Dog();                  //
            dog.name="月熊";                      
            dog.ages=3;
            dog.color="白色";
            System.out.println(dog.ages+dog.name+dog.color);
    
        }
    定义一个没有返回值的方法:修饰符 返回值 方法名(自己起) (参数){}
    }

    调用方法有返回值的用       .var

4.在java中面向对象中的特征

  1. 封装:分为两个层面:1.代码层面  2.思想层面          

  2. 继承

  3. 多态

  4. 抽象

封装

  1. 如果把变量直接声明在类中,叫做成员变量,(作用和全局一个作用)说明变量时类的成员,如果把变量声明在一个方法中叫局部变量,说明只能在某一个部分好使。成员变量又可以叫做属性。

  • 重点:之前我们学习过八种基本数据类型,从今天开始我们的数据类型就更多了,我们能够遇见的类包括刚刚创建的car类是一种数据类型,所有的类都是引用数据类型,只要有new就不是空,就有了地址

  • 赋值的时候除了String之外其余的引用数据类型都需要new

  • 我们需要了解两块内存空间,

    • 栈:存变量和基本数据类型,

    • 堆:赋值都在堆内存里

    • 引用的数据类型默认值是null

 

成员方法

//publid:访问权限修饰符
//void:没有返回值,
//run():方法名,
//():传参数
//参数可以有多个,用,隔开
    public void run(int you){
        //定义了一个一个跑的方法
        //省略了大火,挂挡
        if(you==92){
      		System.out.println("92号油跑的很快");
        }else if(you==95){
            System.out.println("95号油跑的很快");
        }else{
            System.out.println("你加的假油吧");
        }
        System.out.println(brand+"在漂移");
    }

 

  1. 标识符的命名规则:

    1. :大驼峰

    2. 变量名,方法名:小驼峰

  2. java中的传参必须要定义类型,

  3. 在声明方法时()里的参数叫做形式参数,形参可以当作局部变量使用,调用方法时传进去的参数叫做实际参数。

  4. return:终止方法继续执行,返回方法的返回值

  5. 访问权限修饰符:

    1. public:公共的,只要在同一个工程中都可以掉用

    2. protected:受保护的,

    3. 默认的:友好的,

    4. private:私有的,最小只有在当前类可以用

        (成员方法)  1.方法名不能重复

    1. 如果一个方法上有static要调用一个非static的方法,就只能创建对象使用对象.方法调用

    2. 自己调自己:递归。问题:错误,栈溢出

 

方法的重载

  1. 方法名相同

  2. 参数不同才能构成方法的重载

    1. 参数的类型不同,

    2. 参数的个数不同

    3. 参数的顺序不同

    1. 与返回值类型无关

    2. 与参数名称无关

    3. 与访问权限修饰符无关

    4. 与方法体无关

方法的重载一定发生在同一个类中,

好处:为了把功能相似或是相同的的方法

  1. 不定长参数

    1. 参数列表中,至多有一个不定长参数

    2. 不定长参数必须在最后位置。

代码展示:

package com.sunnaiyu;
//import java.lang.String;
/*
* 写两个重载的方法
* 求两个数的最大值
* 求三个数的最大值*/
public class Ch04 {
    public static void main(String[] args) {
        int max = max(1, 4, -5);
        int max1 = max(4, 9);
        System.out.println("两个数的最大值"+max);
        System.out.println("三个数的最大值"+max1);
        String str="您好";
        String a=new String("haha");
        System.out.println(a);
    }

    public static int max(int a, int b) {
        return a > b ? a : b;
    }

    public static int max(int a, int b, int c) {
        return (a > b ? a : b) > c ? (a > b ? a : b) : c;
    }
    /*public void sum1(int a1,int a2){
        System.out.println(a1+a2);
    }

    public void sum1(int a1,int a2,int a3){
        System.out.println(a1+a2+a3);
    }
    public void sum1(int a1,float a2){
        System.out.println(a1+a2);
    }
    public void sum1(int a1,double a2){
        System.out.println(a1+a2);
    }
}*/
}

 方法重载代码展示:

package com.jsoft.morning;

public class ch0000 {
    public static void main(String[] args) {       //方法名相同,都是sum
        sum(1,2);
        sum(4,5,6);
    }
    
    public static  void sum(int a,int b){           //参数不同
        int c=0;
        c=a+b;
    }
    public static  void sum(int a,int b,int c){
        System.out.println("fy");
    }
}

访问权限

  1. public:公共的,只要在同一个工程中都可以掉用

  2. protected:受保护的,

  3. 默认的:友好的,

  4. private:私有的,最小只有在当前类可以访问

构造器(构造方法)

  1. 语法:访问权限修饰符 方法名(就是类名){}

特点:

  1. java在new对象的时候,看对象所在的类有没有构造器,有什么样的构造器,如果没有构造器,无法创建对象,

  2. 每个类会有一个默认的无参构造器,

  3. 构造器什么时候使用的:对象被实例化时使用的。类名 对象名=new 构造器();

  4. 我们创建对象时是通过构造器创建的

  5. 如果一个类中显示的声明了一个构造器,原来默认的构造器就没了,只要写了构造器,按你的来,没写按他的来

*重点总结

有static:方法调用

1.首先定义一个类

2.public static void main(String[] args) {     (main方法)

3.创建一个方法(public static void run(自己建){}

4.run(参数);

无static方法调用

1.创建对象Text2 sch=new Text2();)/(类名+对象名=new 对象名)

2. sch.(方法名)(参数);

学习心得:

今天学习了函数的调用,方法重载,类(class),如何创建对象,遇到不会的题会问旁边的同学,他们讲的很仔细,很认真,会认真解答我的每一个问题,因为他们的热心帮助,今天的学习内容基本都了解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值