黑马程序员_java面向地象-封装
来源:互联网 发布:jsp点击按钮删除数据 编辑:程序博客网 时间:2024/06/10 15:56
黑马程序员——面象对象特性——封装
面向对象程序设计是java编程中最重要的思想,他指导程序员以对象的方式去考虑问题,从而让程序的各个模块之间松耦,让我们编写的程序提高可扩展性,可读性,可维户性等等。
Java面向对象的特性有封装,继承,多态。这是面向对象的三大特性。
一、 封装。
(1) 封装就是对客观存在的事物封装成抽象,并对外公开其公供方法,提供给可信的类和对象调用,对不可信的调用者进行信息隐藏。
(2) Java类中成员的修饰符有Public、protected、<default>、private。
例如:
代码一:
//人是一个对象,电脑也是一个对象等,每个对象它都有它自大的属性,如:电脑,什么品牌,什么颜色,有什么功,显示器是什么类型的等等。
class person
{
String name=null;
int age=0;
public person(String name,int age)
{
this.name=name;
this.age=age;
}
public void speek()
{
System.out.println("我的名字是:"+name+"我的字年龄是:"+age);
}
}
class client
{
public static void main(String[] args)
{
person p=new person("张三",12);
p.speek();
}
}
运行结果为:
代码二:如查我在场景类里传一个-10看看双乍样呢?
class client
{
public static void main(String[] args)
{
person p=new person("张三",-10);
p.speek();
}
}
运行结为:
代码三:再如果我传一个非学大的数字如:1000
class client
{
public static void main(String[] args)
{
person p=new person("张三",1000);
p.speek();
}
}
运行结果为:
看一下代码二和代码三,运行结果完全不符合现实的逻辑。一个人的年龄不可能是负数,也不可能活得一1000年。代码设计有问题,那怎么改呢,如下:
代码四:我们在类的构造器中进行判断,如果给定的年龄符合常理,才行,否则告知调用者。如下:
class person
{
String name=null;
int age=0;
public person(String name,int age)
{
this.name=name;
if(age>=0&&age<=130)
{
this.age=age;
}
else
{
System.out.println("给定的年龄不合法");
}
}
public void speek()
{
if(age>0&&age<130)
System.out.println("我的名字是:"+name+"我的字年龄是:"+age);
else if(age==0)
System.out.println("刚出生年领太小只会哭——啊啊啊啊啊啊啊啊啊啊啊啊啊啊"); }
}
class client
{
public static void main(String[] args)
{
person p=new person("张三",-10);
p.speek();
}
}
代码五:给人这个对象传进1000,代码如下:
class client
{
public static void main(String[] args)
{
person p=new person("张三",1000);
p.speek();
}
}
运行结果:
代码六:在创建对象时传入的参数在0—130时,这是一个符合常理的年龄段,如下:
class client
{
public static void main(String[] args)
{
person p=new person("张三",0);
p.speek();
person p1=new person("张三",10);
p1.speek();
}
}
运行结果:
通过对代码进行判断之后,得到了我们想要的结果。但是这还没完。如下
class client
{
public static void main(String[] args)
{
person p=new person("张三",0);
p.speek();
person p1=new person("张三",10);
p1.speek();
p1.name=”无赖”
p1.age=30
p1.speek();
}
}
运行结果:年龄从10突然变成30,名字也变成了无赖,你能接受吗,返正我不接受。哪有个名字呀,多难听呀。这是乍么办。
我们设计的类还是有问题的,怎么办呢?
思路为:利用关键字private修饰名字和年龄,使得外部不可以访问和修改。然后提供相应的访问接口,对调用者的行为进行约束。如下:
class person
{
private String name=null;
private int age=0;
public void setName(String name)
{
if(!name.equals("无赖")&&!name.equals("下流")&&!name.equals("小三"))
this.name=name;
else
System.out.println("不合法的名字");
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public person(String name,int age)
{
this.name=name;
if(age>=0&&age<=130)
{
this.age=age;
}
else
{
System.out.println("给定的年龄不合法");
}
}
public void speek()
{
if(age>0&&age<130)
System.out.println("我的名字是:"+getName()+"我的字年龄是:"+getAge());
else if(age==0)
System.out.println("刚出生年领太小只会哭——啊啊啊啊啊啊啊啊啊啊啊啊啊啊");
}
}
class client
{
public static void main(String[] args)
{
person p1=new person("张三",10);
p1.speek();
p1.setName("无赖");
p1.speek();
}
}
运行结果:修改了字,但不能是一些不好听的词,
代码七:给人取一个好听一点的名字:如下
class client
{
public static void main(String[] args)
{
person p1=new person("张三",10);
p1.speek();
p1.setName("胡萝卜");
p1.speek();
}
}
结果如下:
总结:面向对象特性——封装。其实就是对客观事物进行的数据隐藏,提供符合的公供方法,并对数据进行有效验证。保证了数据的有效性。提高代码的健壮性,复用性。简单说就封装就是为了提高程序代码的健壮性和代码的复用性。
- 黑马程序员_java面向地象-封装
- 黑马程序员_java面向对象_封装
- 黑马程序员_Java基础Day05_面向对象之封装(Done)
- 黑马程序员_java面向对象(一) 封装
- 黑马程序员_java基础之面向对象封装及继承
- 黑马程序员_Java的封装
- 黑马程序员_java面向对象
- 黑马程序员_JAVA面向对象
- 黑马程序员_Java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_java面向对象
- 黑马程序员_Java面向对象
- 以太网中的UDP编程:udp分包问题
- 在大字符串寻找共出现几次子串的位置(KMP算法C写法)
- 【转帖】HttpClient容易忽视的细节——连接关闭
- 一 linux spi子系统(框架)
- Face Recognition
- 黑马程序员_java面向地象-封装
- Android中带有进度条百分比显示的可以从网络下载文件的适配器
- Visual C#网络编程之TCP
- postgres数据库 数据文件的导入导出
- Strophe 连接状态 AUTHENTICATING问题
- Mysql tee prompt pager
- Ubuntu下配置samba实现文件夹共享
- C# 复制文件,文件夹以及子文件夹文件
- 使用Swing编写win7简易计算器1——页面编程