学习目录:
- 了解修饰符
- protected
- static (静态的) 和 abstract (抽象)
一. 修饰符
**1. 访问修饰符 **:
这些修饰符用于控制类、方法、属性等的访问权限。常见的访问修饰符包括:
public: 任何类都可以访问private: 只能在当前类内部访问protected: 同一包中的类或继承该类的子类可以访问default(没有修饰符):只能在同一包中的类中访问
**2. 非访问修饰符 **:
这些修饰符不控制访问权限,但用于提供其他功能。例如:
static: 用于声明静态成员,表示该成员属于类而不是类的实例。final: 表示常量,或者在方法、类、变量上设置不可更改的限制。abstract: 用于声明抽象类或抽象方法,表示该类不能直接实例化或该方法必须由子类实现。
| 修饰符 | 描述 |
|---|---|
| final | 属性和方法不能被重写或修改 |
| static | 属性和方法属于类,而不是某个对象 |
| abstract | 只能在抽象类中使用,且只能用于方法。该方法没有方法体,例如 abstract void run();。方法体由子类提供(继承)。你将在继承和抽象章节中学习更多关于继承和抽象的内容。 |
| transient | 在序列化包含这些属性和方法的对象时,这些属性和方法会被跳过 |
| synchronized | 方法只能被一个线程同时访问 |
| volatile | 属性的值不会被线程本地缓存,始终从“主内存”中读取 |
二. protected:同一包中的类或继承该类的子类可以访问
示例:
1 | class Person { |
extends 是一个关键字,用于表示类的继承关系。当一个类使用 extends 关键字时,它会继承另一个类的属性和方法。
三. static: 用于声明静态成员,表示该成员属于类而不是类的实例
static 和 public 方法之间的区别:
1 | public class Main { |
四. 抽象(abstract)
一个方法属于一个类,并且没有方法体。方法体由子类提供:抽象(abstract)。
解释:
- 抽象方法(abstract method)是没有具体实现的方法,只有方法的声明(包括方法名、参数等),没有方法体。
- 该方法的具体实现由继承该抽象类的子类来提供。
- 在 Java 中,抽象方法通常出现在抽象类(abstract class)中,子类必须重写这些抽象方法才能实例化该子类。
创建两个java文件: hello.java 文件 和 second.java 文件
1 | abstract class hello { |
这个文件不能独立输出
下个文件进行调用:
1 | class Second { // 定义一个名为 Second 的类 |
可能遇到的问题:
有时候头文件名改了,System.out.println中的fname和age发生了报错,无法解析
解决方法:
确保
Student类继承了Main类: 如果Student类应该继承Main类,并且fname是Main类的属性,确保Student类声明了继承关系如果
Student没有继承Main类,则fname需要在Student类中定义,或者Second类中的myObj需要引用正确的父类。
最终的输出结果:
1 | Name: John |