前言
面向对象程序的三大特性:封装、继承、多态~
书接上回 类和对象(上)~
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
前言
封装
private
public
快速生成可访问封装的方法
包
导包
通过import导包
模糊导入*
特殊举例
建包
static
静态成员变量
编辑
静态成员变量的访问
静态方法
静态与非静态方法的相互调用
代码块
普通代码块
实例代码块
静态代码块
执行顺序
封装
private
代码层面封装:用private修饰成员变量,使得该成员变量只能在该类下使用
优点:提高了数据的安全性
private String name;
例如以下代码,在Person类用private修饰name(封装了),在Test这个类中就不能使用了
这里的name报错
那应该如何访问被封装的成员变量呢?
public
我们在Person类下面写两个方法,用public 修饰,使得其他类也可以访问这些方法
public void eat(){
System.out.println(this.name+"在干饭!");
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
快速生成可访问封装的方法
结果截图
所以,一般情况下(有的时候还是要根据实际情况来):
- 成员变量定义为private
- 成员方法定义为public
包
简单来说就是一个文件夹
用于分类多个Java文件
导包
通过import导包
以Arrays举例
会在第一行自动导入Arrays包
模糊导入*
特殊举例
这样写更方便了,但不建议,因为代码的可读性下降了。
建包
包名:全是小写,域名的逆置写法
比如一个域名是www.baidu.com,在设置包名时是写com.baidu.www
static
静态成员变量
被static修饰的成员变量叫做 静态成员变量(类变量),不存在对象中,存在方法区里,静态成员变量不依赖于对象(不属于某个对象,是所有对象共享的)
public static String country="中国";//用static修饰成员变量,让它存储在方法区里
静态成员变量的访问
System.out.println(person1.country);//利用 对象. 的方式访问静态变量country System.out.println(Person.country);//利用 类名. 访问静态变量country
两种方法都合法,但是第一种方法不合理!建议使用第二种方法
静态方法
public static String getCountry() {
return country;
}
静态与非静态方法的相互调用
静态方法是不需要对象的,在静态方法中调用需要对象的方法是不行的
那该怎么解决这个问题呢?
我们可以在静态方法里面创建一个对象,用于非静态方法调用,这样就不会报错了
相反,在本身就需要对象的方法中调用静态方法是可以的
代码块
使用 {} 定义的一段代码称为代码块。
普通代码块
定义在方法里面的代码块
实例代码块
定义在类里面,方法外面的代码块,也叫 构造块 或者 非静态代码块。
静态代码块
定义在类里面,方法外面,并且用static修饰过的代码块
执行顺序
先静态代码块,再实例代码块,最后是构造方法。
静态代码块不管有多个对象,只执行一次(因为类只会加载一次)