面向对象编程
面向对象思想的几大特征:继承、封装、多态。面向对象语言不只有Java,还有C 、C++等。
一、封装
1.概念
(1) 从语法层面上:字段和方法都被private修饰,此时就是把这个字段和方法进行封装;
(2) 本质:让类的调用者不必太多的了解类的实现者是如何实现类的, 只要知道如何使用类就好了;
(3) 意义:安全;降低了类的使用成本。
2.getter和setter方法
当使用 private 来修饰字段的时候, 就无法直接使用这个字段,此时如果需要获取或者修改这个 private 属性, 就需要使用 getter / setter 方法。
示例:
class Person {
private String name;//实例成员变量
private int age;
public void setName(String name){
//name = name;//不能这样写
this.name = name;//this引用,表示调用该方法的对象
}
public String getName(){
return name;
}
public void show(){
System.out.println("name: "+name+" age: "+age);
}
}
public static void main(String[] args) {
Person person = new Person();
person.setName("caocao");
String name = person.getName();
System.out.println(name);
person.show();
}
(1) getName/setName 即为 getter /setter方法, 表示获取这个成员的值;
(2) 当set方法的形参名字和类中的成员属性的名字一样的时候,如果不使用this, 相当于自赋值. this 表示当前实例 的引用。
3. this关键字
关键字this表示当前对象的引用,作用如下:
(1) 调用属性,也就是调用本类中的成员变量;
(2) 调用方法,就是调用本类中的其他方法;
(3) 构造函数,静态构造方法不能调用类的属性;不能出现第二个this.();且调用时只能放在第一行;
4.构造方法
使用关键字new实例化新对象时会被自动调用;用于完成初始化操作;
(1)实例化对象
- 为对象分配内存;
- 调佣的合适的构造方法(构造方法不止一个);
(2)注意事项
- 当没写构造方法时,编译器会自动生成一个不带参数的构造方法;
5.代码块
使用 {} 定义的一段代码,根据代码块定义的位置以及关键字,又可分为以下四种:
(1)本地代码块:方法内部定义的;
-
示例:
public class Main{ public static void main(String[] args) { { //直接使用{}定义,普通方法块 int x = 10 ; System.out.println("x1 = " +x); } int x = 100 ; System.out.println("x2 = " +x); } }
(2) 实例代码块/构造代码块:在方法外部,类的里边;一般用于初始化实例成员变量