包package
其实就是文件夹
作用:对类进行分类管理。
包的定义格式
package 包名;(多级包用“.”分开)
范例:package com.itheima
导包
修饰符
高聚内: 类的内部数据操作细节自己完成,不允许外部干涉。
低耦合: 仅对外部暴露少量的方法用于使用。
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说:把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。
封装性的体现需要权限修饰符来体现。
权限修饰符
修饰符权限测试:
同一个包下不同类
public class Demo {
private int a=10;
int d;
public int c;
private void method1(){
c=10;
d=20;
a=30;
}
void method2(){
c=10;
d=20;
a=30;
}
public void method3(){
c=10;
d=20;
a=30;
}
}
public class Demo1 {
public static void main(String[] args) {
Demo d1=new Demo();
d1.a=2;//private 报错
d1.d=3;//默认
d1.c=5;//public
}
}
状态修饰符
final(最终态)
可以修饰成员方法,成员变量,类。
1.final修饰的方法是最终方法,不可以被子类重写。但子类依旧可以使用父类的该方法。
2.final修饰的成员变量不能再次被赋值,相当于常量。public final int age=10;
3.fiinal修饰的类因为是最终类,所以不能做父类。
4.final修饰局部变量:
package myday;
public class Phone {
public int age=20;
}
//测试
package myday;
public class Demo {
public static void main(String[] args) {
//final修饰基本类型变量:相当于常量
final int age=20;
//final修饰引用类型变量
final Phone p=new Phone();
p.age=100;//变量可以再次赋值
//但是对象p的地址不能再改变
p=new Phone();//报错
}
}
static(静态)
static关键字是静态的意思,可以修饰成员方法,成员变量。
package myday;
public class Phone {
public String name;
public int age;
}
//测试
package myday;
public class Demo {
public static void main(String[] args) {
Phone p1=new Phone();
p1.name="aaa";
p1.age=15;
Phone p2=new Phone();
p2.name="bbb";
p2.age=15;
//上面p1,p2两个对象中的age是一样的
//若每个对象的age都一样,那么每次都要重新赋值操作
//为了简便,可以使用static修饰age
//这样每个对象使用的都是同一个age
}
}
上面的代码使用static改进:
package myday;
public class Phone {
public String name;
public static int age;
}
//测试
package myday;
public class Demo {
public static void main(String[] args) {
Phone p1=new Phone();
p1.name="aaa";
Phone p2=new Phone();
p2.name="bbb";
Phone.age=15;//可以直接类名.变量名赋值
//也可以对象名.变量名赋值
//两种方法的效果一致,推荐第一种
System.out.println(p1.age+" "+p2.age);
//输出:15 15
}
}
非静态成员方法可以访问所有的静态和非静态成员方法和变量。
而静态的成员方法只能访问静态的成员方法和静态的变量。