1、类和对象的关系
类,事物的抽象描述;
对象,该类事物的个体;
对象是根据类创建的,并且一个类可以对应多个对象。
2、成员变量和局部变量的区别
(1)定义位置上的区别:成员变量定义在类中方法外;局部变量定义在方法内、语句内。
(2)作用域不同:成员变量作用范围是整个类;局部变量作用范围是方法内、语句内。
(3)初始化不同:成员变量有自己的默认值;局部变量没有默认值,不赋值不能使用。
(4)内存位置不同:成员变量跟随对象进入堆内存存储;局部变量跟随自己的方法进入栈内存。
(5)生命周期不同:成员变量跟随对象在堆中存储,内存等待JVM清理,生命相对较长;局部变量跟随方法,方法出栈,生命相对较短。
3、封装
面向对象的三个特征:封装、继承、多态;
封装的体现:
(1)方法就是一个最基本封装体;
(2)类其实也是一个封装体。
封装的好处:
(1)提高了代码的复用性;
(2)隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念;
(3)提高了安全性。
4、private关键字
private 私有,属于成员修饰符,不能修饰局部变量;
被private修饰的成员,只能在自己的本类被使用;
对私有变量,提供公共的访问方式:方法;
类中不需要对外提供的内容都私有化,包括属性和方法;
以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问;
私有仅仅是封装的体现形式而已。
调用set方法,对成员变量进行赋值;
调用get方法,获取成员变量的值
1 public class Person { 2 String name;// 人的姓名,成员变量 3 private int age;// 人的年龄,成员变量 4 5 // 定义方法,对age变量进行赋值,方法名字,必须set开头 6 public void setAge(int a) { 7 // 对变量参数a进行参数的限制 8 if (a < 0 || a > 200) { 9 // 如果a超过范围,手动将age赋值为20 10 age = 20; 11 } else {// 如果没有超过范围,直接对age赋值 12 age = a; 13 } 14 } 15 16 // 定义方法,对变量age获取值使用,方法名字get 17 public int getAge() { 18 return age; 19 } 20 21 // 人的说话功能 22 public void speak() { 23 System.out.println(name + "..." + age); 24 } 25 }
1 public class PersonTest { 2 public static void main(String[] args) { 3 // 创建Person类的对象 4 Person p = new Person(); 5 // 对成员变量赋值 6 // p.age = -20; 7 // 对成员变量age赋值,只能调用Set方法 8 p.setAge(50); 9 p.name = "张三"; 10 p.speak(); 11 12 // 输出成员变量age值,必须调用get方法 13 System.out.println(p.getAge()); 14 } 15 16 }
运行结果:
5、this关键字
区分成员变量和局部变量的同名情况;
在方法中访问成员变量,需要在变量之前加上this.
1 // 人的说话功能 2 public void speak() { 3 this.name="李四"; 4 this.age = 16; 5 System.out.println(name + "..." + age); 6 }