• 面向对象


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

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

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

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

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

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

    }

    }

  • 相关阅读:
    3、Less-计算
    2、Less-混合
    1、Less-初见
    5、反射-动态代理
    4、反射-类的构造器:Constrctor
    3、反射-Field
    2、反射-Method&父类
    1、反射-Class&ClassLoader
    5、URLConnection(3)
    Linux进程状态查询
  • 原文地址:https://www.cnblogs.com/javatask/p/6710804.html
Copyright © 2020-2023  润新知