
东理SHANDONGUNIVERSITYOFTECHNOLOGY类和对象一对象组合、包、访问修饰符、abstract、final、static、this专业专注创新
专业 专注 创新 类和对象 ——对象组合、包、访问修饰符、 abstract、final、static、this

东理功客回顾SHANDONG UNIVERSITY OFTECHNOLOGY类和对象的概念定义成员变量类的封装与局部变量比较位置变量隐藏类的定义类变量与实例变量★成员变量★成员方法定义成员方法对象的创建和使用参数的传递1方法的重载对象的生命周期垃圾自动回收机制不定长参数定义构造方法专业专注创新
专业 专注 创新 回顾 类和对象的概念 类的封装 类的定义 成员变量 成员方法 对象的创建和使用 对象的生命周期 垃圾自动回收机制 定义 成员变量 与局部变量比较 位置 变量隐藏 类变量与实例变量 定义 成员方法 参数的传递 方法的重载 不定长参数 定义 构造方法

东理本节学习目标SHANDONGUNIVERSITY OFTECHNOLOGY1、static02、对象的组合3、包(package)4、import5、访问修饰符public、protected、默认(友好)、private6、abstract 7、 final8、this专业专注创新
专业 专注 创新 本节学习目标 1、static 2、对象的组合 3、包(package) 4、import 5、访问修饰符 public、protected、默认(友好)、private 6、abstract 7、final 8、this

东理1 staticSHANDONGUNIVERSITY OFTECHNOLOGY静态的(static)成员变量一一类变量如:System.out;Math.Pl7静态的(static)成员方法一一类方法如:publicstaticvoid main()如: Math.sqrt()Arrays.sort()★publicstaticdouble sqrt(double a)静态代码块专业专注创新
专业 专注 创新 1 static 静态的(static)成员变量——类变量 如:System.out ;Math.PI 静态的(static)成员方法——类方法 如:public static void main( ) 如:Math.sqrt( ) Arrays.sort() public static double sqrt(double a) 静态代码块

东理宝关于static成员的解释SHANDONGUNIVERSITYOFTECHNOLOGYstatic修饰的成员属于类所有,是每个对象实例所共享的成员。静态成员的引用方式:类名称+“"+域变量/方法7★对象名称+”+域变量/方法(不推荐使用)静态数据与静态方法通常提供共享的数据或工具方法,如:Math.Pl, Math.Exp()、Math.Log()、Math.Sin()Maht.ceilO, Math.floor(),Math.round()Integer.parselnt()、Integer.MAX_VALUE专业专注创新
专业 专注 创新 关于static成员的解释 static修饰的成员属于类所有,是每个对象实例所共 享的成员。 静态成员的引用方式: 类名称+“.”+域变量/方法 对象名称+“.”+域变量/方法(不推荐使用) 静态数据与静态方法通常提供共享的数据或工具方法 ,如: Math.PI, Math.Exp()、Math.Log()、Math.Sin()、 Maht.ceil(), Math.floor(), Math.round() Integer.parseInt()、Integer.MAX_VALUE

东理静态成员使用举例SHANDONG UNIVERSITY OFTECHNOLOGYpublicclassCircleDemoclassCirclefYprivatedoubleradius;l/半径publicstaticvoidmain(Stringargs)public static doublePl=3.14159;publicCircle()I无参数构造方法Circlec1=newCircle(1.0);ySystem.out.println("圆半径为:"+c1.getRadius();this(0.0);System.out.println("圆周长为:"+c1.getLength(0);1System.out.println("圆面积为:"+c1.getArea())System.out.println("静态变量:"+Circle.Pl);publicCircle(doubleradius)I有参构造方法(this.radius=radius;1人publicdoublegetRadius()注意事项return radius;1public void setRadius(double radius)静态方法不能直接使用非静态this.radius=radius;}域变量和非静态方法;public double getLengtho)return Pl*2*radius;}public double getArea()静态方法只能直接调用静态方returnPl*radius*radius;法和静态变量。(也可创建对象后,通过对象调用)
专业 专注 创新 静态成员使用举例 class Circle{ private double radius; //半径 public static double PI=3.14159; public Circle() //无参数构造方法 { this(0.0); } public Circle(double radius) //有参构造方法 { this.radius=radius; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius=radius; } public double getLength() { return PI*2*radius; } public double getArea() { return PI*radius*radius; } } public class CircleDemo { public static void main(String args[]) { Circle c1=new Circle(1.0); System.out.println("圆半径为:"+c1.getRadius()); System.out.println("圆周长为:"+c1.getLength()); System.out.println("圆面积为:"+c1.getArea()); System.out.println("静态变量:"+Circle.PI); } } 注意事项 • 静态方法不能直接使用非静态 域变量和非静态方法; • 静态方法只能直接调用静态方 法和静态变量。(也可创建对 象后,通过对象调用)

东理功客类生成实例(对象)的再解释SHANDONGUNIVERSITY OF TECHNOLOGY程序执行过程中,类字节码只加载一次(第一次定义变量时之后常驻内存),程序执行完毕从内存中卸载。类字节码加载静态变量分配空间,赋值静态方法分配入口地址执行静态代码块new操作一一创建对象第一次执行,可能引发类字节码加载(如未加载)类的加载有多种方式用该类的字节码生成一个对象,为对象分配内存为实例变量分配内存并赋初值:执行该类的构造方法(可能再为实例变量赋值);实例方法分配入口地址(第一次)专业专注创新
专业 专注 创新 类生成实例(对象)的再解释 程序执行过程中,类字节码只加载一次(第一次定义变量时, 之后常驻内存),程序执行完毕从内存中卸载。 类字节码加载 静态变量分配空间,赋值 静态方法分配入口地址 执行静态代码块 new操作——创建对象 第一次执行,可能引发类字节码加载(如未加载)类的加载有多种方式 用该类的字节码生成一个对象,为对象分配内存 为实例变量分配内存并赋初值; 执行该类的构造方法(可能再为实例变量赋值); 实例方法分配入口地址(第一次)

东理2、对象的组合SHANDONG UNIVERSITY OFTECHNOLOGY成员变量可以是JAVA允许的任何数据类型ClassA类可以把ClassB类对象成员变量★对象之间的关系:has-a专业专注创新
专业 专注 创新 2、对象的组合 成员变量可以是JAVA允许的任何数据类型 ClassA类可以把ClassB类对象 成员变量 对象之间的关系:has-a

东理功—举例对象的组合SHANDONGUNIVERSITYOFTECHNOLOGYJRectanglejavaXDCubicjavaDCubicTestjavaDCubicjava XDCubicTest.javaDRectanglejavapublicclass Rectanglefpublic class Cubiafint w;Rectangle rect;int h;int z;Cpublic int length() (public int volumn()(return 2*(w+h):return rect.area() * z;子子1-public int area() (D RectanglejavaDcubicjavaDCubicTestjavaXreturn w * h;7public class cubicTestpublic static void main(string[l args) (7cubic c=new cubic();Rectangle rect=new Rectangle();rect.w=1o;rect.h=3;立方体对象cc.rect=rect;包含一个长方形对象rectC.Z=2;System.out.println(c.volumn());7
专业 专注 创新 对象的组合——举例 立方体对象c 包含一个长方形对象rect

东理3、包SHANDONGUNIVERSITYOFTECHNOLOGY为什么要使用包?易于管理易于查找文档分门别类,不同内容的文档可以放在不同的文件夹中拥有相同的名字,避免冲突专业专注创新
专业 专注 创新 3、包 文档分门别类,易于查找 不同内容的文档可以放在不同的文件夹中, 拥有相同的名字,避免冲突 易于管理 为什么要使用包?