[public] [abstract| final] class类名称 [extends父类名称][implements接口名称列表]
{
数据成员声明及初始化;
方法声明及方法体;
}
class
表明其后声明的是一个类
extends
如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
implements
如果所声明的类要实现某些接口, 那么,接口的名字应写在钟表类:
public class Clock {
//变量成员
int hour ;
int minute ;
int second ;
//方法成员
public void setTime(int newH, int newM, int newS){
hour= newH ;
minute= newM ;
second= newS ;
}
public void showTime() {
System.out.println(hour+ "." + minute+"." +second);
}
}
其中hour
,minute
,second
为钟表类的属性,setTime
,showTime
为钟表类的行为。
[public | protected | private]
[static][ final][transient] [volatile]
数据类型变量名1[=变量初值],变量名2[=变量初值];
说明1.没有static修饰的变量(数据成员)称为实例变量;
2.存储所有实例都需要的属性,不同实例的属性值可能不同;
3.可通过下面的表达式访问
1.用static修饰。
2.在整个类中只有一一个值。
3.类初始化的同时就被赋值。
例:
public class Circle{
static double PI = 3.1415926
int redius;
}
其中PI为类变量。
方法成员 语法形式[public | protected | private][static] [final][abstract] [native] [synchronized]
返回类型方法名([参数列表]) [throws exceptionList]
{
方法体
}
public
、protected
、 private
控制访问权限。
static
指明这是一个类方法(静态方法)。
final
指明这是一一个终结方法。
abstract
指明这是一个抽象方法。
native
用来集成java代码和其它语言的代码(本课程不涉及)。
synchronized
用来控制多个并发线程对共享数据的访问。
返回类型
方法返回值的类型,可以是任意的Java数据类型;
当不需要返回值时,返回类型为void。
参数类型
简单数据类型、引用类型(数组、类或接口) ;
可以有多个参数,也可以没有参数,方法声明时的参数称为形式参数。
方法体
方法的实现;
包括局部变量的声明以及所有合法的Java语句;
局部变量的作用域只在该方法内部。
throws exceptionList
抛出异常列表。
实例方法
表示特定对象的行为;
声明时前面不加static修饰符;
实例方法调用具有实例方法的圆类:
public class Circle {
static double PI = 3.1415926;
int radius;
public double circumference(){ //求圆周长
return 2*PI*radius;
}
public void enlarge(int factor){ //把圆扩大factor倍
radius = radius*factor;
}
public boolean fitsInside (Rectangle r) { //判断能否被长方形包围
return (2 *radius < r.width) && (2* radius < r.height);
}
}
其中有三个实例方法,fitsInside
方法的参数类型为对象。
例:将摄氏温度(centigrade)转换成华氏温度(fahrenheit)
转换公式为fahrenheit = centigrade * 9 /5 + 32,除了摄氏温度值及公式中需要的常量值,此功能不依赖于具体的类实例的属性值,因此可声明为类方法centigrade ToFahrenheit
放在类Converter
中
public class Converter {
public static int centigradeToFahrenheit(int cent)
{
return (cent*9/ 5 + 32);
}
}
方法调用
Converter.centigradeToFahrenheit(40)
import package1[.packae...]. (classname |*);
1.package1[.package…]表明包的层次,对应于文件目录;
2.classname指明所要引入的类名;
3.如果要引入一个包中的所有类,可以使用星号(*)来代替类名。
类型 | 无修饰(默认) | public |
---|---|---|
同一包中的类 | 是 | 是 |
不同包中的类 | 否 | 是 |
类型 | private | 无修饰 | protected | public |
---|---|---|---|---|
同一类 | 是 | 是 | 是 | 是 |
同一包中的子类 | 否 | 是 | 是 | 是 |
同一包中的非子类 | 否 | 是 | 是 | 是 |
不同包中的子类 | 否 | 否 | 是 | 是 |
不同包中的非子类 | 否 | 否 | 否 | 是 |
例:圆类
public Class Circle {
static double PI = 3.14159265;
private int radius;
public doyble circumference() {
return 2 * PI * radius;
}
}
其他的public类中无法访问该类中的radius
属性。
如果想要访问:
get
开头,后面是实例变量的名字public int getRadius(){
return radius;
}
set方法set
开头,后面是实例变量的名字public void setRadius(int r){
radius = r;
}
this关键字
如果方法内的局部变量(包括形参)名与实例变量名相同,则方法体内访问实例变量时需要this关键字。public void setRadius(int radius){
this.radius = radius;
}
对象初始化
对象初始化例:
public class BankAccount {
String ownerName;
int accountNumber;
float balance;
//为BankAccount声明一个有三个参数的构造方法
public BankAccount(String initName, int initAccountNumber, float initBalance) {
ownerName = initName;
accountNumber = initAccountNumber;
balance = initBalance;
}
//假设一个新帐号的初始余额可以为0,则可增加一个带有两个参数的构造方法
public BankAccount(String initName, int initAccountNumber) {
ownerName = initName;
accountNumber = initAccountNumber;
balance = 0.0f;
}
//无参数的构造方法自定 义默认的初始化方式
public BankAccount() {
ownerName =" ";
accountNumber = 999999;
balance = 0.0f;
}
}
一共定义了三种构造方法,可以看出名字都相同,但是由于参数不同,实现的功能也不同。
张宜强 原创文章 472获赞 665访问量 26万+ 关注 他的留言板 关注博主即可阅读全文