zoukankan      html  css  js  c++  java
  • 面向对象

    面向过程和面向对象的区别?

    面向过程:事物简单,可以用线程思维解决

    面向过程:事物比较复杂,已经无法用线性思维解决

    共同点:面向过程和面向思维都是解决问题的一种方法。相辅相成

    面向对象的本质:以类的方式组织代码,以对象的方式组织(封装)数据。

    类(Class):是对对象的抽象。对象(Object):说具体的事物(实例跟创建对象一个意思)

    类可以看成是一个模板,系统可以根据类的模板创建对象。

    对象和类的关系:特殊到一般,具体到抽象。

    类可以看成一类的对象的模板,对象可以看成是该类的一个具体实例。

    类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所具有的静态和动态实现

    对象是JAVA程序的核心。"万物皆对象"

    定义类:

    public class Car{//每一个源文件必须只有一个public class,并且类名和文件名保持一致

    }

    class Type{//一个java文件可以同时定义多个class

    }

    一般来说,类的具体信息都有:属性field,方法method,构造器constructor

    类是组成java的基本属性,类体有两部分组成,一部分是变量的定义,一部分是方法的定义。

    示例;

    public class SxtStu{//修饰符 class 类名

    //属性

    int id;

    String name;

    int age;

    Computer comp;

    void study(){

    System.out.println("正在学习");

    }

    public statiic void main(String[] args){

    SxtStu p=new SxtStu();//创建对象  类名 对象名 =new 类名();

    p.name ="澳塔曼";//对象名.属性  为属性赋值

    p.study();//调用方法

    }

    }

    访问类中的属性和方法

    对象名.属性 对象名。方法名

     

    属性和方法的区别?

    1.声明位置不同: 类中 和 方法中

    2.作用范围不同:属性是在当前类中都可以使用, 方法是在当前方法中使用

    3.内存不同: 类放在栈内存中,方法是在堆内存中

    内存分析:

    栈:

    1.每个线程私有,不能实现线程间共享。

    2.局部变量放在栈中。先进后出,自下而上存储

    3.栈是系统自动分配的,是一个连续的内存空间。

    4.方法完毕后自动释放空间。

    堆:

    1.放置new出来的对象,需要垃圾回收机制回收

    2。堆是不连续的空间

    方法区:

    1.所有线程共享

    2.用来存放程序中不变的内容。 (类代码信息,静态变量,字符串常量等)

     属性(field,成员变量)

    属性用于定义该类或类对象包含的数据或者静态方法。

    属性的作用域是整个类体。

    在定义成员变量时,可以对其初始化,如果不初始化,系统将使用默认的值对其初始化。例如:int类型的默认值0 ,Boolean:false 等

    属性的定义格式:

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

    类的方法

    方法则用于定义该类的实例行为特征和功能实现。方法是对类和对象的抽象。类似于面向过程的函数。

    面向过程中,函数是基本单位,整个程序由一个个函数调用而成。

    面向对象中,类是整个程序的基本单位,方法从属于类。

    方法的定义格式:

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

    //方法体

    }

     对象的创建和使用:

    必须使用new关键字创建对象。 :Student  stu=new Student();

    使用对象(引用),成员变量来引用对象的成员变量。

    使用对象(引用),方法(参数列表)来调用对象的方法。 person.setAge(230)

    同一个类的每个对象有不同的成员变量存储空间。

    每一个类的每个对象共享该类的方法。

    构造器(构造方法,constructor)

    构造器用于构造该类的实例。

    java通过new关键字来调用构造器,从而返回该类的实例。

    格式:

    [修饰符]类名 (形参列表){

    //语句

    }

    要点;

    通过new关键字调用。

    构造器虽然没有返回值,但是不能定义返回类型(返回值的类型肯定跟本类相同),不能 在构造器中使用return。

    如果没有调用构造函数,系统会默认一个无参的构造函数。

    构造器方法名必须跟类名相同。

    构造器中不能有返回值,为什么又定义void?

    构造函数有返回值就是构造函数对象。

    示例:

    请定义一个交通工具(Vehicle)的类其中有:  属性: 速度(speed) 体积(size)等,方法:移动(move())、设置速度(setSpeed(int speed))、加速 speedUp()、减速 speedDown()等。最后在测试类 Vehicle 中的 main()中实例化一个交通工具对象并通过方法给它初始化 speed,size 的值并且通过打印出来。另外调用加速、减速的方法对速度进行改变。

    public class Vehicle{

    private  int speed;

    private  int size;

    public void Vehicle(){};无参构造

    public void Vehicle(int speed,int size){

    this.speed=speed;

    this.size=size;

    }

    public void move(){

    System.out.println("前进速度:"+speed);

    }

    public void setSpeed(int speed ){

    this.seep=speed;

    System.out.println("初始速度:"+speed);

    }

    public void setSize(int size){

    this.size=size;

    System.out.println("初始体积:"+size);

    }

    public void speedUp(){

    this.speed+=20;

    System.out.println("速度增加20后为:"+speed)

    }

    public void speedDown(){

    this.speed-=10;

    System.out.println("减速10后为:"+speed);

    }

    public static void main(String []args){

    Vehicle p=new Vehicle();//创建对象

    p.setSize(20);//初始体积

    p.setSpeed(30);//初始速度

    p.move();//移动

    p.speedUp();//减速

    p.speedDown();//加速

    }

    }

  • 相关阅读:
    WRF rsl.out文件研究
    ERA-Interim 的变量TCW和VIWV可降水量
    sudo apt update 没有 Release 文件
    线性斜压模式LBM学习&安装实录
    PGI 用户手册之 Site-Specific Customization of the Compilers
    ERA5气压层数据驱动WRF的一些问题
    OpenMP fortran 学习
    crontab计划运行shell脚本,调用ncl执行失败
    CDO学习2 CDO 入门教程Tutorial
    guide, manual, tutorial之间的区别
  • 原文地址:https://www.cnblogs.com/javatask/p/6710804.html
Copyright © 2011-2022 走看看