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();可以调用无参构造方法,必须写在构造方法的第一句,不能自己调用自己
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修饰的代码块 在主方法执行之前执行的,而且只执行一次
特点:
**作用:**给类进行初始化。
当类中的方法都被静态了化,并且构造方法被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);
}
}