java封装实验,Java 封装

面向对象有三大特性:封装、继承、多态。

封装就是将类的信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

如何去实现类的封装呢?

修改属性的可见性,在属性的前面添加修饰符(private 后面会讲)

创建 getter/setter 方法,用来读写属性

在 getter/setter 方法里加入属性的控制语句,例如我们可以加一个判断语句,对于非法输入给予否定。

定义包名:package 包名 //必须放在源程序的第一行,包名可用"."号隔开

eg: package com.shiyanlou.Java

包的命名规范是全小写字母拼写

导入包用import;eg: import com.shiyanlou.* 将包下的所有文件都导入进来;

this关键字代表当前对象。使用this.属性操作当前对象的属性,this.方法调用当前对象的方法。

系统帮我们创建好了getter和setter方法后,我们会发现系统创建的方法中参数名和我们的属性名一样。为了区分参数名和我们的属性名,我们在属性名前面添加了this关键字;代表我们将一个参数的值赋给我们当前对象的属性。

内部类:定义在另外一个类里面的类,而包含内部类的类被称为外部类

1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据

3.内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便;

内部类的调用:先创建外部类对象,再使用外部类对象创建内部类对象;

如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字

package com.shiyanlou;

//外部类People

public class People {

private String name = "LiLei"; //外部类的私有属性

//内部类Student

public class Student {

String ID = "20151234"; //内部类的成员属性

//内部类的方法

public void stuInfo(){

System.out.println("访问外部类中的name:" + name);

System.out.println("访问内部类中的ID:" + ID);

}

}

//测试成员内部类

public static void main(String[] args) {

People a = new People(); //创建外部类对象,对象名为a

Student b = a.new Student(); //使用外部类对象创建内部类对象,对象名为b

b.stuInfo(); //调用内部对象的suInfo方法

}

}

静态内部类是 static 修饰的内部类,这种内部类的特点是:

1.静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

2.如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过成员名直接调用外部类的静态成员;

3.创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

package com.shiyanlou;

//外部类People

public class People {

private String name = "LiLei"; //外部类的私有属性

/外部类的静态变量。

Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。

/

static String ID = "510xxx199X0724XXXX";

//静态内部类Student

public static class Student {

String ID = "20151234"; //内部类的成员属性

//内部类的方法

public void stuInfo(){

System.out.println("访问外部类中的ID:" + People.ID);

System.out.println("访问内部类中的ID:" + ID);

}

}

//测试成员内部类

public static void main(String[] args) {

Student b = new Student(); //直接创建内部类对象,对象名为b

b.stuInfo(); //调用内部对象的suInfo方法

}

}

方法内部类

方法内部类就是定义在外部类的方法中的内部类,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

例如:

package com.shiyanlou;

//外部类People

public class People {

//外部类中的方法

public void peopleInfo() {

final String sex = "man"; //外部类方法中的常量

class Student {

String ID = "20151234"; //内部类中的常量

public void print() {

System.out.println("访问外部类的方法中的常量sex:" + sex);

System.out.println("访问内部类中的变量ID:" + ID);

}

}

Student a = new Student(); //创建方法内部类的对象

a.print();//调用内部类的方法

}

//测试方法内部类

public static void main(String[] args) {

People b = new People(); //创建外部类的对象

b.peopleInfo(); //调用外部类的方法

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值