面向对象三大特性之封装
面向对象的三大基本特征:
封装:封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的事功能。
继承:即城市面向对象实现软件服用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类的成员。
多态:多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对对象在运行时可能表 现出不同的行为特征
局部变量和成员变量区别
区别一:
定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量
区别二:
在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
区别三:
生命周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:
初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
创建类:
1 package com.oracle.demo02; 2 3 public class Person { 4 //私有:private 关键字 把变量还有方法私有化,外界不能访问 5 //只能在本类中访问。 6 //封装:隐藏实现细节,对外提供访问方式 7 private String name; 8 private int age; 9 public void setName(String n){ 10 name=n; 11 } 12 //取值 13 public String getName(){ 14 return name; 15 } 16 public void setAge(int a){ 17 if(a>=0 && a<=120){ 18 age=a; 19 }else{ 20 age=0; 21 } 22 } 23 //取值 24 public int getAge(){ 25 return age; 26 } 27 public void speak(){ 28 System.out.println("我叫"+name+"今年"+age+"岁了"); 29 } 30 }
测试类:
1 package com.oracle.demo02; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 Person p1=new Person(); 7 /*p1.name="夏目"; 8 p1.age=20;*/ 9 p1.setName("夏目"); 10 p1.setAge(20); 11 Person p2=new Person(); 12 System.out.println(p1.getName()+"......"+p1.getAge()); 13 /* p2.name="三三"; 14 p2.age=-18;*/ 15 p2.setName("三三"); 16 p2.setAge(-18); 17 p1.speak(); 18 p2.speak(); 19 20 }
运行结果: