OOP思想(Object Oriented Programming)即为面向对象编程,其特征为:
-
封装
-
继承
-
多态
封装
-
使用关键字private来修饰成员变量或者成员方法,一旦被这个关键字修饰,就不能在类外进行访问了,然后统一提供对应的getter和setter方法。
-
封装的本质就是让类的调用者不必清楚地了解类的实现者是如何实现类的,只要知道如何使用类就行了。这样就降低了类调用者的学习和使用成本,从而降低了复杂程度。
构造方法
-
构造方法是在实例化对象时自动被调用的特殊方法,用于完成初始化操作。
-
没有返回值,方法名和类名相同,每个类中一定至少存在一个构造方法。(当一个类没有提供构造方法时,系统会自动生成一个不带有参数的构造方法。)
构造方法的语法:方法名 (形参) {
}
注意:
-
如果类中定义了构造方法,那么默认的无参数的构造方法不再生成
-
构造方法支持重载,规则和普通方法的重载一致
this关键字
this代表当前对象的引用,它的使用:
-
this.data 访问成员变量
-
this.func() 调用成员方法
-
this() 调用构造方法(必须放在第一行进行显示,只能调用一个)
如:
class Student {
private String name;
private int age;
private String sex;
private static int count;
//构造方法
public Student() {
this("zhangsan");//调用构造方法放在第一行
System.out.println("不带参数的构造方法");
}
public Student(String name) {
this.name = name;
System.out.println("带有1个参数的构造方法");
}
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
System.out.println("带有3个参数的构造方法");
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//成员方法
public void eat() {
System.out.println(name + " eat()");
}
public void sleep() {
this.eat();
System.out.println(this.name+"sleep()!");
}
//静态方法内部不能用this
public static void staticFunc() {
//System.out.println(this.age);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
实例化一个对象分为2步:
-
为对象分配内存
-
调用合适的构造方法(意味着构造方法不止一个)
如:
public class Test {
public static void main(String[] args) {
Student stu = new Student("zhangsan" );//调用了带有一个参数的构造方法
Student stu2 = new Student();//调用了不带有参数的构造方法
}
}