专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Java基础知识3-类和对象(1)

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

面向过程(结构化程序设计)

实际上是一个面向操作过程,首先设计一系列过程(算法)来求解问题(操作数据),然后再考虑存储数据的方式(组织数据)。即程序=算法\+数据结构。对应典型的计算机语言是c。

优点:

性能比面向对象高,调用速度快,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发

缺点:

没有面向对象易维护、易复用、易扩展

面向对象(面向对象程序设计)

和面向过程的次序相反,首先要确定如何组织数据,然后再考虑如何操作数据的算法。</br>面向对象的程序是由对象组成,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。</br>用户不必关心对象的具体实现,只需要对象能够满足用户的需求即可。即程序=对象\+消息。

优点:

易维护、易复用、易扩展

缺点:

性能比面向过程低

类和对象

类(class)

是同一种对象的集合与抽象,是一组相关的属性和行为的集合。类中成员变量是事物(同一种对象集合)的属性,成员方法是事物的行为。</br>定义类实际上就是定义类的成员(成员变量和成员方法)。变量描述的是事物的属性,方法描述的是事物的行为。

90_1.png

实例变量

又叫做对象变量,成员变量。当通过类生成对象的时候才分配存储空间,再通过对象的引用来访问实例变量。各个对象之间的实例变量互不干扰。有默认初始值,存在于对象所在的堆内存中。

类变量

又叫静态变量,是一种用static关键字修饰的特殊成员变量。在类加载的时候就分配存储空间。<br>所有由这个类生成的对象都共用这个类变量。一个对象修改了变量,则所有对象中的这个变量的值都会发生改变。

局部变量

方法中或某局部块中声明定义的变量或方法的参数,只存在与创建他们的代码块中(\{ \})。如函数内,语句内。

90_2.png

实例方法

每个实例方法都有一个返回值类型,一个签名(指定方法名)

构造方法

每个Java类至少含有一个构造方法以创建一个对象的标识,构造方法的作用是初始化实例变量。

1、 格式:

 *  方法名和类名一样
 *  没有返回值类型
 *  没有具体的返回值

student(){}

2、 注意事项:

 *  构造方法可以重载(overload),但是不能被重写(override)。
 *  若未在类中写构造方法,系统会提供一个默认的无参构造方法,如果写了,系统将不会提供(建议自己写个无参的构造方法)

     *  作用:Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中的默认的无参构造方法,而此时又找不到无参构造方法执行,所以在编译时会发生错误。
 *  构造方法不能递归调用

3、 给成员变量赋值的方式:

 *  无参构造方法+set、get方法
 *  带参构造方法

class Student{ private String name; private int age; public Student(){} public Student(String name, int age){ this.name = name; this.age = age; } public void getName(){ return name; } public String setName(String name){ this.name = name; } public int getAge(int age){ this.age = age; } public void getAge(){ return age; } } class StudentDemo { public static void main(String[] args) { //创建对象,调用setter方法赋值 Student s = new Student(); s.setName("Ethan"); s.setAge(16); //调用有参构造方法创建对象 Student s = new Student("Ethan", 16); } }

对象(object)

对象(object)是类的一个具体的实例。由类构造(construct)对象的过程叫做创建类的实例(instance)。

对象的初始化过程

Student s = new Student(); //对象初始化

1、 加载Student.class到内存中
2、 在栈内存中为s开辟内存空间
3、 在堆内存中为对象申请内存空间
4、 对象默认初始化
5、 对象显示初始化(类里赋值初始化,如private name = “Ethan”;)
6、 构造方法赋值
7、 将对象的地址赋值给s变量
90_3.png

匿名对象

1、 没有名字的对象,如 new Student();
2、 可以作为实际参数进行传递,如new Student().study();

参数

1、 形参:用于定义方法时使用的参数。用于接收调用者传递的形参只有在方法被调用的时候,虚拟机才会分配内存单元。所以只在方法内部有效。
2、 实参:用以调用时传递给方法的参数。在传递给别的方法之前先已赋值。

值传递和引用传递

1、 值传递:在方法调用的时候,实参将它的值传递给对应的形参,函数接收的是原始值的一个复制,此时内存中存在两个相等的基本类型(实参和形参)。后面方法的操作都是对形参来进行修改,不改变实参的值。
2、 引用传递:方法调用时,实际参数的地址(不是参数的值)被传递给对应的形式参数,函数接收的是实参的地址,并指向同一块内存地址。后面方法的操作会影响到实参。
3、 注意:在Java中只有值传递

关于形参和实参,这篇文章讲的不错

https://yq.aliyun.com/articles/642055#

面向对象的三大特性

封装

继承

多态

封装

1、 作用:隐藏了具体实现细节,并且提供了公共的访问方式
2、 优点:

 *  提高代码的复用性
 *  提高代码的安全性

3、 设计原则:将不想外界知道的细节隐藏。private是封装的一种体现,类、方法、访问修饰符都是封装的一种技术。

文章永久链接:https://tech.souyunku.com/38511

未经允许不得转载:搜云库技术团队 » Java基础知识3-类和对象(1)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们