类和对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。

面向对象和面向过程详解

我们常说高级语言分为:面向过程和面向对象。

面向过程:c

面向对象:c++, Java

共同点:面向过程和面向对象都是解决实际问题的一种具体思路。

区别:

大家描述一下如下两件事儿:

如何开汽车(事物比较简单,可以用线性的思维去解决)

面向过程:1.采离合2. 挂档3.踩油门,放离合4.开了

面向对象:

驾驶员

2.  汽车

驾驶员开汽车!Motor.start();

如何造汽车(事物比较复杂,使用简单的线性思维无法解决)

面向过程:1. 造车轮 2. 造发动机 3. 造车皮4. 挡风玻璃

面向对象:

车轮

买橡胶

到马来西亚

买飞机票

找到橡胶厂

掏钱买

用船将橡胶运到国内

造磨具

将橡胶放入磨具

出车轮

发动机

….

车壳

….

座椅

挡风玻璃

….

将上面的造出的东东,组装,汽车造出!

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

解决简单问题可以使用面向过程解决,解决复杂问题:宏观上使用面向对象把握,细节处理上仍然使用面向过程

面向对象思考方式:遇到复杂问题,先从问题中找到名词,然后确立这些名词哪些可以作为类,再根据问题需求确定类的属性和方法,确定类之间的关系

一 对象和类的概念

java中有一句名言,万事万物皆对象,对象指的是一个具体的事物

比如一个叫小明的人就是一个对象,而类是对对象的抽象

人类就是一个类,小明就是人类的一个实例也就是对象,人类中可能有其他人也就是其他实例,小李,小孙等等

把车作一个类的话,对象就是 我家的别克车,对象也可以是你家的玛莎拉蒂车,对象就是具体的事物,而类就是对象的集合,所有对象的统称

类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象

 比如车类,模板就是有四个轮子,发动机,座位,可以跑

车类的一个对象可以是你家的车,就有四个轮子,发动机,也能跑,也能带着你跑,车是你家的车,是一个实在的例子

类的定义

在java中类的定义方式是  class 类名

1 class Car{
2     
3 }

比如这个Car类

上面的Car类一片空白,可以定义属性,有轮子,发动机,座位 可以定义跑的方法

class Car{
      String name;
      int age;
      String color;
      String zuowei; 
    void run(){
      System.out.println("我是汽车我能跑,还能带人跑");
    }  }

上面定义了属性,有车的名字,车龄,颜色,座位,还有个跑的方法

创建了类了,就该创建对象了,通过车类得到你家的车

类名 对象名 = new 类名()

class Car{
      String name;
      int age;
      String color;
      String zuowei; 
    void run(){
      System.out.println("我是汽车我能跑,还能带人跑");
    }
     public static void main(String[] args){
          Car car = new Car();
          car.name="极品宝马"
          car.age=3;
          car.color="黑色";
          car.zuowei="真皮";
          car.run();
       }   
}        

你家的车改名叫极品宝马,已经3年的历史了,黑色,被你改装成了真皮沙发,还在跑

一般类中除了属性和方法还包含构造器,也就是构造函数,可以在创建对象的时候直接给属性赋值,相当于,直接给对象做个自我介绍

class Car{
      String name;
      int age;
      String color;
      String zuowei; 
      public Car(String name,int age,String color,String zuowei){
            this.name=name;
            this.age=age;
            this.color=color;
            this.zuowei=zuowei;
      }  
    void run(){
      System.out.println("我是汽车我能跑,还能带人跑");
    }
     public static void main(String[] args){
          Car car = new Car("极品宝马",3,"黑色","真皮");
                   car.run();
       }   
}        

这和上面的效果是一样的,如果在定义类的时候不创建构造器,系统会默认定义一个无参构造器

类中的属性:[修饰符]  属性类型  属性名 = [默认值] 

可以直接赋初始值,也可以不赋值,系统会默认初始值

属性可以是基本数据类型,也可以是引用数据类型 

类中的方法:定义该类的功能,比如吃饭,睡觉,打架这些动态的行为,可以这么理解,属性是名词,方法是动词,方法展现的是该类能干什么事,有什么行为

方法定义格式:

[修饰符]  方法返回值类型  方法名(形参列表) {

// n条语句

}

类和对象实例:

定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。要求如下:

可以生成具有特定坐标的点对象。

提供可以设置三个坐标的方法。

提供可以计算该“点”距另外点距离平方的方法。

class Point {
    double x, y, z;
    
    public Point(double _x, double _y, double _z) {
        x = _x;
        y = _y;
        z = _z;
    }
    
    public double  getDistance(Point p) {//传参数,参数就是Point的一个对象
      //计算两点之间的距离
return Math.sqrt((x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z)); } } class Test { public static void main(String[] args) { Point p = new Point(5.0, 6.0, 7.8); Point origin = new Point(0.0, 0.0, 0.0);
     //通过调用方法得到距离 System.
out.println(p.getDistance(origin)); } }

结果技术分享

 






以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章

使用CSS伪类和伪对象实现dl;dt+dd在一行显示

JAVA方法的定义

10方法的定义和重载和递归

JavaSE:类和对象

如何从片段内的列表视图打开链接网址?

VSCode自定义代码片段12——JavaScript的Promise对象