开始——面向对象_对象
作者:互联网
面向对象和面向过程的区别
- 面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、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 对象名 ( ). 方法名 ( );
当方法只调用一次的时候可以使用匿名对象,也可以多次,但浪费资源
可以调用成员变量并赋值,但赋值没有意义,可以当做参数进行传递,但无法在传递参数之前做其他事情
修饰符 属性 数据类型 名称( 形参 )
详细的看后面关于方法的笔记
标签:Java,对象,开始,Houyi,面向对象,houyi,方法 来源: https://blog.csdn.net/q2530058796/article/details/122645068