----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
面向对象封装
1、面向对象(封装概述)
封装:面向对象的。。。仅对外提供公共访问方式。是指隐藏对象的属性和实现细节。
封装原则:将不需要对外提供的内容都隐藏起来。
函数本身就是一个最小的封装体。
实际用的时候不需要了解框架的原理,但刚开始学的时候要了解。
public static void tobin()
{
trans();
}
public static void tohex()
{
trans();
}
private static void trans()//这个对象函数可以隐藏,用private实现封装。
{
....
}
2、面向对象(封装private)
class Person
{
int age;
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.age=-20;
p.speak();//打印age=-20。这和人的实际年龄相违背。原因是age建立对象后被直接访问造成的。
对比:
//private:私有,权限修饰符;用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效。
封装private是权限最低的。
class Person
{
private int age;
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.age=-20;//编译失败。age已经被私有化在Person中,该类以外的外界,即使建立了对象,也是不可能访问的到的。
p.speak();
}
}
class Person
{
private int age;
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.speak();//打印age=0。因为age的默认初始化值为0
将age私有化以后,类以外即使建立了对象也不能直接访问。
但是人应该有年龄,就需要在Person类中提供对应访问age的方式。
注意:私有仅仅是封装的一种表现形式。
class Person
{
private int age;
public void haha(int a)//给外界提供一个方法
{
age=a;
}
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.speak();//打印age=0。因为age的默认初始化值为0
}
然后进行封装:
class Person
{
private int age;
public void setAge(int a)//setAge是规范性的命名(设置年龄的方法),方法名如果有多个单词组成,首个单词小写,其它的单词首字母大写。
{
age=a;
}
public int getAge()//获取年龄的方法。这和上面的setAge是一组对称的。
{
ruturn age;
}
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.setAge(-20);
p.speak();//打印age=-20
}
之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句。
对访问的数据进行操作。提高代码健壮性。
class Person
{
private int age;
public void setAge(int a)
{
if(a>0&&a<130)
{
age=a;//age不是指的private int age;而是哪个对象在运行赋给哪个age。40是赋给堆内存中的age
speak();//同时调用speak对象。
}
else
system.out.println("feifa age");
}
public int getAge()
ruturn age;
}
void speak()
{
system.out.println("age="+age);
}
}
class PersonDemo
{
public static void main(string[] args)
{
Person p=new Person();
p.setAge(40);//打印40
p.setAge(-40);//打印feifa age
p.speak();//打印40
}