Java面向对象与static关键字详解
需积分: 9 186 浏览量
更新于2024-07-07
收藏 557KB DOCX 举报
"面向对象编程中的static关键字和继承概念解析"
在Java编程语言中,面向对象是核心特性之一,它允许我们将复杂的问题结构化为一系列相互协作的类和对象。本讲将深入探讨static关键字和继承这两个重要的面向对象概念。
一、static关键字
static关键字在Java中扮演着多个角色,它能够应用于变量、方法以及代码块,甚至可以修饰内部类。以下是对static关键字各个方面的详细解析:
1. 静态变量(类变量)
静态变量是用static修饰的成员变量,它们属于类而非特定的对象。这意味着所有类的实例都会共享同一份静态变量的拷贝,而不是每个实例都有自己独立的副本。例如:
```java
public class School {
static String name = "XYZ High School";
}
```
在这种情况下,无论创建多少个School的实例,name变量的值都是共享的。
2. 静态方法
静态方法不依赖于任何对象实例,可以直接通过类名调用。它们不能访问非静态变量,因为非静态变量与特定的对象实例关联。例如,一个计算班级平均分的静态方法不需要访问具体的Student对象。
3. 静态代码块
静态代码块是一段在类加载时执行的初始化代码,用于设置静态变量的初始值。这些代码块只执行一次,在类加载时。
4. 静态内部类
当一个类被static修饰时,它被称为静态内部类,可以在没有外部类实例的情况下创建。这与非静态内部类(成员内部类)不同,后者必须有一个外部类实例才能创建。
二、静态变量与非静态变量的区别
- 概念:非静态变量(实例变量)属于对象,静态变量属于类。
- 存储:非静态变量存储在堆内存中,静态变量存储在方法区的静态存储区。
- 生命周期:非静态变量随着对象的创建和销毁而存在,静态变量与类的生命周期同步。
- 访问:非静态变量必须通过对象访问,静态变量可以通过类名直接访问,也可以通过对象访问。
三、继承
继承是面向对象编程中的另一个关键概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这样,子类不仅可以拥有自己的特性和行为,还能复用父类的功能,实现代码的重用和扩展。例如:
```java
public class Person {
String name;
int age;
public void eat() {
// eat logic
}
}
public class Student extends Person {
String school;
@Override
public void eat() {
// student-specific eat logic
}
}
```
在这个例子中,Student类继承了Person类,因此Student对象具有eat方法和name、age属性。同时,Student还可以添加自己的属性(如school)和方法,甚至可以覆盖父类的方法(如eat),以适应学生特有的行为。
总结,面向对象的static关键字和继承是Java编程中提高代码复用性和结构化的重要工具。理解并熟练应用这些概念,能够帮助开发者编写出更高效、易于维护的代码。
2021-12-12 上传
2021-12-12 上传
2021-12-12 上传
2019-08-23 上传
2021-12-12 上传
很有想法的小李
- 粉丝: 0
- 资源: 13
最新资源
- cpp_from_control_to_objects_8e:从C到对象,从控制结构开始,第8版
- import:R的导入机制
- vue2+vue-router+es6+webpack+node+mongodb的项目.zip
- Golang中的神经网络+培训框架-Golang开发
- 仅在页脚部分的最后一页的最底部打印表格页脚
- mac-config:Brewfile和脚本来设置全新的Mac安装
- writexl:轻巧的便携式数据帧,用于R的xlsx导出器
- Bootstrap模态登录框
- exif_read.rar_图形图像处理_Visual_C++_
- 福橘-股票行情-crx插件
- :magnifying_glass_tilted_right::bug:Golang fmt.Println调试和跟踪工具,能够可视化函数调用路径。-Golang开发
- 投资组合:我的个人投资组合以及由React提供的Dot Net服务器
- streamy-server
- voices:p5.js小实验
- New Tab Wallpaper-crx插件
- xml-website:监控项目的网站