修饰符和关联、依赖
1.高级类特性
可以通过以下修饰符实现类的一些高级特性
static:修饰属性、方法、块、内部类
final:修饰类、常量属性、方法、局部常量
2.static属性
2.1 static的定义
1.static被称为静态,可以用来修饰类的属性或者方法。
2.如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性。
3.static属性可以使用对象调用,也可以直接用类名调用。
4.静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。
class Baby{
String name;
int age ;
static String sex;
}
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Baby by=new Baby(23, "女生");
System.out.println(by.sex+Baby.sex);
}
}
class Baby{
String name;
int age ;
static String sex;
public Baby(int age,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
3.static方法
3.1static方法定义
如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法。
public static void Baby(){} ;
3.2static方法的作用
static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用.
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Baby by=new Baby(23, "女生");
System.out.println(by.sex+Baby.sex);
Baby.Speak();
}
}
class Baby{
String name;
int age ;
static String sex;
public Baby(int age,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
static void Speak() {
System.out.println("i love you");
}
}
3.3何时使用static方法
1.如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。不需要创建对象后再使用该方法。
例如:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可。
3.4 static总结
static方法定义
static方法的作用
static方法的重要性
本类的方法之间的调用
任何方法都可以直接调用静态方法
静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法
4.static块
4.1什么是static块
static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块。
区别在于语法不同
class Baby{
String name;
int age ;
static String sex;
public Baby(int age,String sex) {
// TODO Auto-generated constructor stub
this.name=name;
this.sex=sex;
}
static void Speak() {
System.out.println("i love you");
}
static {
System.out.println("123");
System.out.println("123");
System.out.println("123");
}
4.2static用途
静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。
一个类中可以有多个静态块,按照顺序执行。
5.final属性及参数
5.1final定义
final 用于声明属性,方法和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
5.2final修饰属性
当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
一些数学定理中的常量经常使用final修饰
π= 3.14159265358979
E= 2.718281828459045
5.3final修饰参数
对参数做final修饰
在方法参数前面加final关键字,为了防止数据在方法体中被修改。
6.类与类之间的关系
关联关系
依赖关系
继承关系
实现关系(本质也是继承关系)
6.1关联关系
1.对象和对象之间的连接。在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在。
即“有”的关系:”has-a”。
2.关联关系分为单向关联和双向关联
单向关联: A类关联B类。
双向关联:A类关联B类,B类关联A类;
3.关联关系的多重性:
一对一关联:一个学生,只能在一个班级里学习。
例:
public class Classes{
private Student cla;//班级
}
public class Student{
}
一对多关联:一个学生,可以参加多个班级学习。
解决一对多的关联的方案
集合
数组
4.关联关系的特殊情况
如果两个互相关联的类中有整体和部分的关系,关联关系分为: 聚合和组合,主要区别在于生命周期不同。

浙公网安备 33010602011771号