开始——面向对象_对象

2022/1/23 6:07:45

本文主要是介绍开始——面向对象_对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

  • 面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
  • 面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低。

面向对象的三个特征:继承、封装、多态.

Java呢是一门面向对象语言。有以下基本概念:多态、继承、封装、抽象、类、对象、实例、方法、重载、接口等

成员变量的初始值:引用类型 null


 

初学了解即可,后期必学底层,自己找书看,我也不会。

Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为Java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。

具体步骤写下来。

1、编写一个 Hello world.Java的文件。

2、使用“Javac Hello world.Java”命令开启Java编译器并进行编译。编译结束后,会自动生成一个Hello World. class的字节码文件

3、使用“ Java Hello world”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为类加载,它是由类加载器完成的,然后虚拟针对加都到内在中的Java类进行解释执行,便可看到运行结果。

通过上面的分析不难发现,Java程序是由虚拟机(JVM)负责解释执行的,而并非操作系统。


什么是对象呢?

对象 ==>类 ==> 方法 ==》成员变量

对象==》全局变量 ==>类 ==> 方法 ==》成员变量

 对象:

一个文件就是一个对象,就相当于我创建了一个文件,叫王者荣耀.java  当然不能用中文名称,这里是方便分辨。

类(class):

类就是给对象分类,如:王者荣耀里有什么英雄,一个英雄为一个类,可以有多个类多个英雄,每个类里又有方法

方法:

方法就是来写如何实现功能的,如攻击方式、长啥样

成员变量:

变量是来给方法用的,就相对,移速、攻击力、防御力的值


类与对象的定义和使用:

class 类名称 {
    属性 (变量) ;
    行为 (方法) ; 
}

1、首先定义类、属性、方法

类的命名格式,建议是开头是大写的!

class Houyi{
    String Name;
    int GongJiLi;
    int FangYuLi;
    public void cesi() { // 没有static
        System.out.println("姓名:" + Name + ",攻击力:" + GongJiLi + "防御力" + FangYuLi ) ;
    }

类定义完成之后,肯定无法直接使用。如果要使用,必须依靠对象

然后需要先在main方法里实例化对象出来才能使用

切记,一个java程序只能有一个main方法名;

格式:声明并实例化对象

类名称 对象名称 = new 类名称 () ;

Houyi houyi = new Houyi();

这种写法,包含了声明对象和实例化对象;

也可以分开写

Houyi houyi = null;//声明对象

houyi = new Houyi () ;//实例化对象

当只声明对象时,编译器会报错,编译不会报错,执行会报错

Exception in thread "main" java.lang.NullPointerException

空指针异常

当一个实例化对象产生之后,可以按照如下的方式进行类的操作:

对象.属性名:表示调用类之中的属性;

houyi.Name = "后裔";
houyi.GongJiLi = 20;
houyi.FangYuLi = 30;


对象.方法名():表示调用类之中的方法。   

houyi.cesi();

对象 点一下 可以调用属性和方法
 

这样就写好了一个对象

package com.company;

public class demo {
    public static void main(String[] args) {
        //实例化对象
        Houyi houyi = new Houyi();

        //给成员变量赋值
        houyi.Name = "后裔";
        houyi.GongJiLi = 20;
        houyi.FangYuLi = 30;

        //调用方法
        houyi.cesi();

    }

}
//后裔这个类
class Houyi{
    String Name;
    int GongJiLi;
    int FangYuLi;
    public void cesi() { // 没有static
        System.out.println("姓名:" + Name + ",攻击力:" + GongJiLi + ",防御力" + FangYuLi ) ;
    }
}


初学了解即可,后期dddd

从内存的角度来看:

        堆内存: 保存对象的属性内容。堆内存需要用new关键字来分配空间

        栈内存:保存的是堆内存的地址,也就是属性名

任何情况下,只要看见关键字new,表示要分配新的堆内存空间,一旦堆内存空间分配了,里面就会有类中定义的属性,并且属性内容都是其对应数据类型的默认值。


 对象呢又分为 静态对象(static)和非静态对象、匿名对象

静态对象:在当前文件下操作,可以直接调用,当然也可以实例化出来,

而且成员变量和方法是唯一的

public static void main(String[] args){

}

非静态对象

public void Demo(){

}

匿名对象:没有名字的对象

new 对象名 ( ). 方法名 ( );

当方法只调用一次的时候可以使用匿名对象,也可以多次,但浪费资源

可以调用成员变量并赋值,但赋值没有意义,可以当做参数进行传递,但无法在传递参数之前做其他事情

修饰符  属性    数据类型   名称( 形参 )

详细的看后面关于方法的笔记



这篇关于开始——面向对象_对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程