Java基础知识整理【7】 (封装,static,代码块)

eclipse里面包的作用及规则:
作用:分类管理java文件使用,关键字 package 用来创建包的 会出现在类的第一行
规则:1.创建包的时候,不能以java开头,因为Java有安全机制所以不允许,java开头的包都是系统API
2.包名必须遵守标识符的命名规则不适用关键字/全部小写(建议)
3.企业开发中包名是公司域名的倒写/没有www
例:package com.qfedu.packaging.homework;
公司域名倒写.项目的名称.模块名是什么.子模块(组件)

封装

private 私有化的权限是最低的
//仅限当前类的内部可以访问其他位置都不可以访问
//虽然私有化数据安全,问题是只能在类的内部记性访问,但是其他类无法操作当前属性 private int age;
一旦属性私有化,需要提供getter和setter方法
作用是:若当前属性私有化之后只能通过getter方法获取 或 setter方法赋值 ,不能直接操作变量,一定程度上保证变量安全

什么是封装:将信息隐藏起来,把不需要外部知道的信息隐藏,尽可能隐藏对象功能实现的细节,向外直接提供可以访问的方法,保证外 界是无法破坏原有方法内部的信息

private私有化是封装概念的一种体现,但是不能说private就是封装

getter方法的定义

访问权限修饰符 返回类型 方法名 (){
return 对应成员变量的值;
}
返回值类型:这个返回值类型必须有,getter是获取属性值,所以必须有返回值类型

//getter方法获取成员变量
 public int getAge() {
        return age; 
  }

setter方法对成员变量进行赋值

访问权限修饰符 void 方法名(参数列表){
使用参数对成员变量进行赋值
}

//setter方法对成员变量进行赋值 
public void setAge(int a) {
//写逻辑,非法拦截 
        if(a < 0) {
            System.out.println("数据不合法无法赋值");//抛出异常 
        }else {
             age = a; 
        }
 }

封装的好处:
1.使调用者正确方便的使用系统功能,防止调用者随意修改系统属性
2.提高主件的重用性
3.可以达到主件之间的低耦合性(当某一个模块实现发生变化的时候,只要对外暴露的接口不变,就不会影响其他模块)

this关键字

this关键字是当前对象,谁是当前对象,谁调用谁就是
this.成员变量 可以访问成员变量
this.成员方法 可以访问成员方法
this();可以调用无参构造方法,必须写在构造方法的第一句,不能自己调用自己

static关键字

static的特点:
1.static修饰变量或方法,随着类的加载而加载!
2.优于对象存在
3.static修饰的成员变量即静态变量是所有对象共享
4.static修饰变量或方法可以通过类名.方式调用 ,static修饰的是属于类

static修饰成员变量时:
作用域在当前类的内部都可访问,并且外部可以使用(类名.静态变量名)访问
static不能修饰局部变量或作为方法参数修饰存在

static修饰成员方法时:
成员变量,不能直接在静态方法中使用 //System.out.println(name);
this不和static共存,this代表的当前对象,static生命优先级高于this,static出生了但是this还没有
// System.out.println(this.name);
// 3.调用成员方法 ,静态方法中是不可以直接调用成员方法 //show();
// 4.静态方法中调用静态方法 showInfos();

非要在静态方法调用成员变量和方法可以创建对象 new StaticVarAndMethod().show();
System.out.println(new StaticVarAndMethod().name);

static修饰的代码块

代码块:在类或方法中,直接使用"{ }"括起来的一段代码,即表一段代码段

1.局部代码块:直接定义在方法的内部(了解)
控制变量的生命周期;

2.初始化代码块(构造代码块)
作用:它可以给所有对象进行初始化
存在于:类中。
当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!
3.静态代码块; 使用static修饰的代码块 在主方法执行之前执行的,而且只执行一次

特点:

  1. 随着类的加载而执行,而且只一次。
  2. 优先于主函数执行。

**作用:**给类进行初始化。
当类中的方法都被静态了化,并且构造方法被private了,这是我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块:

package day08;
 
/*
 *	代码块:在Java中,使用{}括起来的代码成为代码块
 *	根据其位置和声明的不同,可以分为
 *		局部代码块:局部位置,用于限定变量的生命周期
 *		构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。
 *			作用:可以把多个构造方法的共同代码放在一起。
 *		静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰
 *			作用:一般是对类进行初始化
 *		面试题?
 *			静态代码块、构造代码块、构造方法的执行顺序?
 *			静态-》构造代码块-》构造方法
 *			静态代码块:只执行一次
 *			构造方法:每次调用构造方法都执行
 * */
class Code{
	//静态代码块
	static{
		
		int a=1000;
		System.out.println(a);
	}
	//构造代码块
	{
		
		int x=100;
		System.out.println(x);
	}
	
	//构造方法
	public Code(){
		
		System.out.println("code");
	}
	
	//构造方法
	public Code(int a){
		
		System.out.println(a);
	}
	
	//构造代码块
	{
		
		int x=200;
		System.out.println(x);
	}
	
	//静态代码块
	static{
		
		int b=2000;
		System.out.println(b);
	}
}
public class CodeDemo {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		{
			//局部代码块
			int x=10;
			System.out.println(x);
		}
		//找不到符号
		//System.out.println(x);
		{
			int y=20;
			System.out.println(y);
		}
		System.out.println("---------------");
		
		Code c = new Code();
		System.out.println("---------------");
		Code c2 = new Code();//静态只执行一次
		System.out.println("---------------");
		Code c3 = new Code(10000);
	}
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值