Java面向对象之封装
构造方法 方法重载 static修饰符 封装 Java编程
1.构造方法
1.构造方法是一种特殊的方法,它是一个与类同名且无返回值类型的方法。
2.构造方法的功能主要是完成对象的初始化。
3.对象的创建就是通过构造方法来完成,当类实例化一个对象时会自动调用构造方法。
语法结构:
访问修饰符 构造方法名 (数据类型 参数1,数据类型 参数2,… ) {
//初始化代码
}
注意:在没有给类提供任何构造方法时,系统会提供一个默认无参构造方法。一旦提供了自定义构造方法,系统将不再提供这个无参构造方法。如果要使用它,则必须手动添加。
这里public Penguin(){},大括号中的就是无参构造方法。
注:常见错误
class Penguin {
String name = null; //昵称
int health = 0; // 健康值
String sex = null; // 性别
public void Penguin() {
health=10;
sex="雄";
System.out.println("执行构造方法");
}
public void print() {
System.out.println("企鹅的名字是" + name + ",健康值是"
+ health + ",性别是" + sex);
}
}
public void Penguin()中有返回值类型(void),不是构造方法。
2.方法重载
方法重载:在同一个类中,方法名相同,通过参数个数和类型的不同来区分不同的方法,方法的重载跟返回值类型和修饰符无关。
System.out.println(45);
System.out.println(true);
System.out.println("狗在玩耍!");
方法重载的优点:
方法重载其实是对一般方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,只要记住一个方法即可。
构造方法的重载:
3.static修饰符
1.static可以用来修饰属性、方法和代码块。
2.static修饰的变量属于这个类所有,即由这个类创建的所有对象共用同一个static变量。
3.通常把static修饰的属性和方法称为类属性和类方法,不使用static修饰的属性和方法属于单个对 象,通常称为实例属性和实例方法。
代码案例:
static修饰总结:
1.在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
2.类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问。
3.类方法只能访问类属性和其他类方法,不能使用this和super关键字。
4.实例方法中不可以定义static变量
static修饰和非static修饰的区别
static、非private修饰 | 非static、private修饰 | |
属性 | 类属性、类变量 | 实例属性、实例变量 |
方法 | 类方法 | 实例方法 |
调用方式 | 类名.属性 类名.方法() 对象.属性 对象.方法() | 对象.属性 对象.方法() |
归属 | 类 | 单个对象 |
注:常见错误
class Dog {
private String name = "旺财"; // 昵称
private int health = 100; // 健康值
private int love = 0; // 亲密度
public void play(int n) {
static int localv=5;
health = health - n;
System.out.println(name+" "+localv+" "+health+" "+love);
}
public static void main(String[] args) {
Dog d=new Dog();
d.play(5);
}
}
static int localv=5;
实例方法中不能定义static变量
4.封装
封装:面向对象三大特征之一
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的好处:
便于使用者正确使用系统,防止错误修改属性。
有助于系统之间的松耦合,提高系统独立性。
提高软件的可重用性。
降低了构建大型系统的风险。
封装的步骤:
封装时会用到多个权限修饰符来修饰成员变量和方法:
代码实例:
public class Dog {
private String name = "旺财"; // 昵称
private int health = 100; // 健康值
private int love = 0; // 亲密度
private String strain = "拉布拉多犬"; // 品种
public int getHealth() {
return health;
}
public void setHealth (int health) {
if (health > 100 || health < 0) {
this.health = 40;
System.out.println("健康值应该在0和100之间,默认值是40");
} else
this.health = health;
}
// 其它getter/setter方法
}
在封装中需要通过setter来接收;通过getter来发送。以达到修改封装中的变量。
this关键字是对一个对象的默认引用。在每个实例方法内部,都有一个this引用变量,指向调用这个方法的对象。
方片6: 猜错了
李文昊: csdn全是黑马尚硅谷的大军是吧
方片6: CV一下
方片6: 那挺好
行一269: 我们该写这个了