面向对象

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

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

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

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

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

类(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();//加速

}

}

原文地址:https://www.cnblogs.com/javatask/p/6710804.html