版权声明:本文为博主原创文章,转载请声明原文出处: https://blog.csdn.net/lucky534528795/article/details/89042910
本文脉络
类的概念
类是实例的抽象表现(取其共性)
实例是类的具体表现(各个实例有差异)
类:实例 —> 1:n
类——>一种抽象的数据类型,内含
- 成员变量:描述对象的属性、状态
- 成员方法:描述对象的行为、功能
例如,现实世界中的实体——学生
数据描述:姓名、学号 、性别、出生年月、专业、籍贯等;
行为描述:设置、修改相关属性值,输出学生信息等
类的定义方法
[①访问修饰符] [②类型修饰符] class 类名{ // 类声明语句
成员变量的声明; // 描述属性
成员方法的声明; // 描述功能
} // 类体结束
class是声明类的关键字,不可省略
类名要“见名知意”,首字母要大写
①访问修饰符
访问级别 | 访问控制修饰符 | 同类 | 同包不同类(不含子类) | 同包子类 | 不同包不同类**(不含子类)** | 不同包子类 |
---|---|---|---|---|---|---|
公开 | public | √ | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | – | √(注意) |
默认 | 没有访问控制修饰符 | √ | √ | √ | – | – |
私有 | private | √ | — | — | – | – |
来源: https://www.cnblogs.com/tjudzj/p/4443066.html
②类型修饰符
public class ClassTest {
//缺省:表示一个具体的、可实例化及可被继承的类。
}
public abstract class ClassTest {
//abstract:表示一个抽象类,不能实例化,但可被继承。
}
public final class ClassTest {
//final:表示一个最终类,只能被实例化,不能被继承。
}
成员方法
//定义成员方法的方法
[访问修饰符] [类型修饰符] <返回值类型> <方法名>([参数列表]){
方法体;
}
成员方法类型:
缺省:实例方法
只能由对象来调用,声明时不需要添加类型修饰符
实例方法的入口地址分配:在类的第一个对象创建后分配,后续对象创建时不再分配入口地址。类的所有对象共享该入口地址。当该类的所有对象被销毁,入口地址才会消失
//定义实例方法:
public void printMsg(){
...
}
/*调用实例方法的格式:
*类内:实例方法名([实参列表]);
*类外:对象名.实例方法名([实参列表]);*/
static:类方法(静态方法)
静态方法的入口地址分配:在类加载后分配。在程序退出时,类方法的入口地址才消失。
静态方法可以直接访问该类的静态变量和静态方法,不能访问非静态资源!
//定义类方法
public static void printMsg(){
...
}
/*调用静态方法的格式:
*类内:静态方法名([实参列表]);
*类外:类名.静态方法名([实参列表]); //推荐使用
*类外:对象名.静态方法名([实参列表]);*/
final:最终方法
由对象调用,且不能被子类修改的方法,声明时需要添加final类型修饰符
//定义最终方法
public final void pring(String str){
...
}