JAVA语言学习-面向对象(1)
2024-09-08 16:14:34
类与对象
类
类是JAVA语言中重要的复合型数据类型()。类的实现包括两个部分:成员变量和成员方法("方法"可以看作是C语言中的函数)
类的声明
要使用类,首先得对其声明。声明一个类其实就是创建一种新的数据类型。我们利用声明的类来定义类实例,即来获得一个对象。
声明类的语法有
[类修饰符] class <类名>{
//类的内容
}
例1
public class FirstDemo{ //public为访问控制修饰符,FirstDemo为类名
private String str; //str为成员变量
public void setPrac(String str){ //setPrac为成员方法(下getPrac同)
this.str=str;
}
public String getPrac(){
return str;
}
}
类成员的访问控制
- 访问控制修饰符
类或类的成员需要定义其作用域,即可访问范围。
如例1中"public",它是类FirstDemo的访问控制修饰符,表示类FirstDemo可以被JAVA中的其他类访问使用。
其他常用的访问控制修饰符和其作用域有:
修饰符\可访问范围 | 同一类 | 同一包 | 不同包中的子类 | 不同包中的非子类 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
("Y"表示YES,即可访问,"N"表示NO,即不可访问。另外子类涉及继承,包和继承的内容之后会有介绍)
- 类型修饰符
类型修饰符有final,abstract,static。
类型修饰符用以说明类或类的成员的一些特殊性质。final和abstract主要与类的继承性质有关(之后会介绍)
现在主要讲static:
在一个类中,使用static来修饰的变量和方法(类成员)分别称为类(静态)变量和类(静态)方法,没有使用的就称为实例变量和实例方法。
类成员属于这个类而不属于这个类的某个对象,它由这个类所创建的所有对象所共有。实例成员则由每一个对象所独有。
不同对象之间,它们的实例成员互相独立,可以怎么说,任何一个对象改变了自己的实例成员只会影响这个对象本身,而非其他对象中的实例成员。
对实例成员而言,它只能通过对象来访问,而不能通过类名来访问,类成员则可直接通过类名访问。
例2
public class Test{//测试对实例成员和类成员的不同访问形式
static int i=1;
int j=1;
static void printStactic(){
System.out.println("i="+i);//System.out.println("j="+j);为非法访问
}
void print(){
System.out.println("i="+i);
System.out.println("j="+j);
}
public static void main(String[] args){
Test.printStatic()//Test.print();为非法访问
Test.i=2;//Test.j=2;为非法访问
Test test= new Test();//声明实例化对象test
test.i=3;
test.j=3;
test.print();
test.printStatic();
}
}
例2运行结果
i=1
i=3
j=3
i=3
未完待续(内容如有错误请指正)
最新文章
- C# 的TCP Socket (同步方式)
- CSS3媒体查询能检测到的特性小结
- 【BZOJ 4569】【SCOI 2016】萌萌哒
- September 4th 2016 Week 37th Sunday
- LinQ的一些基本语句
- HDU 5405 (树链剖分+线段树)
- Codeforces Round #280 (Div. 2) E. Vanya and Field 数学
- Java多线程(二) 多线程的锁机制
- Java环境变量的配置及意义
- [Javascript] Add a browser build to an npm module
- 新手讲树:证明任意二叉树度为零的节点n0,永远比度为2的节点n2多1个
- document.querySelectorAll遍历(forEach小解)
- mysql语句的一个问题
- JTAG各类接口针脚定义及含义
- 学习python及Pygame的安装及运行
- 根据ip,实现地址信息查询接口
- var_dump() 查看字符的类型 方法
- Ubuntu下apache2启动、停止、重启、配置
- Android通知栏的高度获取
- 通过java解析域名获得IP地址
热门文章
- Spring 10: AspectJ框架 + @Before前置通知
- 五 工厂方法模式【Factory&#160;Method&#160;Pattern】&#160;来自CBF4LIFE 的设计模式
- 经纬度转换为距离单位km的方法
- limits.conf 配置不生效问题排查
- mysql_阻塞和死锁
- QT学习(三)
- 继GitHub的Copilot收费后,亚马逊推出了 CodeWhisperer,感觉不错哟!
- 获取Docker容器名称和ID
- CentOS7.9 yum方式安装redis最新版
- 创建Grafana Dashboard