java--封装(encapsulation)

一.概念

        将抽象的数据(属性)和数据的操作(方法)进行封装。

        数据被保护在内部

        其他部分通过授权(方法)去操作。

二.优点

        1.隐藏实现细节

                利用调用/传参---------各种方法

         2.对数据进行验证(安全)(合理)

三.实现步骤

        1.将属性私有化:不直接修改属性--通过main中实现

        2.提供一个公共的(public)set方法

                用于属性的判断/赋值

public void setxxx(类型 参数名){
        
       xxx某一属性
       判断/验证逻辑
       赋值:属性=参数名
       }

        3.提供一个get方法 获取属性值

public void getxxx(类型 参数名){
        
      return 羞xx;
       }
public class PenguinTest {

	public static void main(String[] args) {
		//使用无参构造方法创建Penguin类对象
		Penguin penguin = new Penguin();
		//给penguin对象属性赋值
		penguin.name= "QQ";
		//给属性赋值,正常来说应该赋予一个有意义并且合理的值, 不能让你随便的赋值
		penguin.health = -1000;
		//我们需要对属性进行一个操作,让用户不能随意的去直接操作属性,而应该让
        你间接的去操作,我们可以使用封装来实现这个保护

 举例:

        创建类和方法

package cn.bdqn.demo02;

public class Penguin {

	private String name;
	private int health;
	private int love;

	public Penguin() {
	}

	public Penguin(String name, int health, int love) {
		this.setName(name);
		this.health = health;
		this.love = love;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	//定义获取健康值的方法
	public int getHealth(){
		return health;
	}
	//定义设置健康值的方法
	public void setHealth(int health){
		//对你调用此方法传递过来的数据进行判断
		if(health<0||health>100){
			System.out.println("你输入的健康值不合理,默认给你的企鹅健康值赋值为80");
			this.health=80;
		}else{
			this.health=health;
		}
	}

	public int getLove() {
		return love;
	}

	public void setLove(int love) {
		this.love = love;
	}
	
}

         测试类对象

package cn.bdqn.demo02;

public class PenguinTest {

	public static void main(String[] args) {
		// 创建Penguin类对象
		Penguin penguin = new Penguin();
		penguin.setName("QQ");
		System.out.println(penguin.getName());

		// penguin.health = 90;
		penguin.setHealth(-90);
		int health =penguin.getHealth();
		System.out.println("企鹅健康值:"+health);
		
		penguin.setLove(90);
		System.out.println(penguin.getLove());
		
		double num =Math.random();
	}

}

 4.为什么需要包

 6.包的作用

7. 包的创建

 8.命名规范

9.导包

10. 使用包的注意事项

 

package cn.bdqn.demo04;

/*
 * 一个Java文件中只能有一个public修饰的类,并且这个类的名称要和这个Java文件的名称保持一致
 * 一个Java文件中除了public修饰的类之外,还可以定义0个或者多个默认修饰符(什么都不写)的类
 * 注意:一般来说,一个Java文件中只定义一个类
 */
public class PublicClass {

}

class Demo01{
    
}class Demo02{

}

package cn.bdqn.demo04;

public class Test {

    public static void main(String[] args) {
    
    //在demo04包中的测试类(public修饰的)里创建demo04包中的public修饰的类
    PublicClass pc = new PublicClass();
    //在demo04包中的测试类(public修饰的)里创建demo4包中的默认修饰符修饰的类
    DefaultClass dc = new DefaultClass();

    }

}

package cn.bdqn.demo04;

class Test2 {
    
    public static void main(String[] args) {
        
        //在demo04包中的测试类(使用默认修饰符修饰的类)里创建demo04包中使用public修饰的类
        PublicClass pc = new PublicClass();
        //在demo04包中的测试类(使用默认修饰符修饰的类)里创建demo04包中使用默认修饰符修饰的类
        DefaultClass dc = new DefaultClass();
        
    }

}
 

举例:

package cn.bdqn.demo06;

public class Student {
	//使用不同的访问权限修饰符定义属性
	public String name;
	protected int age;
	String address;
	private char gender;
	
	
	public static void main(String[] args) {
		//在本类中,上述不同修饰符修饰的属性能不能被直接访问
		Student stu = new Student();
		stu.name = "张三";
		stu.age = 19;
		stu.address = "安徽合肥";
		stu.gender = '男';
	}

}

 

package cn.bdqn.demo06;

public class Test {

	public static void main(String[] args) {
		// 创建Student类对象
		Student stu = new Student();

		stu.name = "王五";
		stu.age = 22;
		stu.address = "安徽芜湖";
		// 同包中的其它类不能访问其它类中使用private修饰的属性
		// stu.gender = '男';
	}

11.类的访问修饰

        类的访问修饰符

                public修饰符:公有访问级别

                默认修饰符:包级私有访问级别

                        

 

12. 类成员的访问修饰

13.static修饰符

        static可以用来修饰

                成员变量

                        静态变量,可以直接通过类名访问

                成员方法

                         静态方法,可以直接通过类名访问

                代码块

                          静态代码块,当Java虚拟机加载类时,就会执行该代码块

14.static代码块

        

15.static变量

 16.static方法

        

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值