一、类

类可以看成是创建对象的模板,它描述一类对象的行为和状态。创建对象也叫类的实例化。类必须先定义才能使用。

通过下面一个简单的类来理解下Java中类的定义:

public class Dog {  //Dog类的名字
String name; // 成员变量name
int age;
static int time=; //类变量 void hungry(){
System.out.println("主人,我饿了");
} void sleeping(){
int t = ; //局部变量
System.out.println("主人,我睡了");
}
}

一个类可以包含以下类型变量:

  • 局部变量:在方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。
  • 类变量(静态成员):类变量也声明在类中,方法体之外,但必须声明为static类型

一个类可以拥有多个方法,方法可以表示类的行为,在上面的例子中:hungry()和sleeping()都是Dog类的方法。

构造方法

在类的实例化过程中构造方法会自动执行,它主要在实例化过程中做一些初始化的工作。

每个类都有构造方法,如果没有显式地为类定义构造方法,Java编译器会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。

构造方法的名称必须与类同名,一个类可以有多个构造方法,并且没有返回值。

下面是一个构造方法示例:

public class Dog {  //Dog类的名字
String name; // 成员变量name
int age;
static int time=; //类变量 public Dog(){ //无参构造方法
System.out.println("i am dog");
} Dog(String name1, int age1){ //有参构造方法
name = name1;
age = age1;
System.out.println("感谢主人领养了我");
} void hungry(){ //普通方法,要有返回类型,如void,int
System.out.println("主人,我饿了");
} public static void main(String arg[]){
// 创建对象时传递的参数要与构造方法参数列表对应
Dog myDog = new Dog("小王", );
}
}
  • 当没有指定构造方法时,系统会自动添加无参构造方法
  • 当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
  • 构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值
  • 构造方法的重载:方法相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象
Dog myDog;  // 声明一个对象
myDog = new Dog("小王", ); // 实例化 //也可以这样写,声名的同时进行初始化
Dog myDog = new Dog("小王", );

static

Java 中被 static 修饰的成员称为静态成员或类成员变量

使用 static 可以修饰变量、方法和代码块。

public class HelloWorld {
// 定义静态变量,保存班级名称
static String className = "JAVA开发一班";
public static void main(String[] args) {
// 访问静态变量,输出班级名称
System.out.println(HelloWorld.className);
}
}

静态方法

与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。

1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量.

3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

初始化块

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

public class HelloWorld {

    String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age // 构造方法
public HelloWorld() {
System.out.println("通过构造方法初始化name");
name = "tom";
} // 初始化块
{
System.out.println("通过初始化块初始化sex");
sex = "男";
} // 静态初始化块
static {
System.out.println("通过静态初始化块初始化age");
age = 20;
} public void show() {
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
} public static void main(String[] args) {
// 创建对象
HelloWorld hello = new HelloWorld();
// 调用对象的show方法
hello.show();
}
}

最新文章

  1. java函数参数默认值
  2. DOS批处理中%cd%和%~dp0的区别
  3. WINHEX 使用教程
  4. sql拆分查询
  5. 数据绑定(八)使用Binding的RelativeSource
  6. redis.config翻译
  7. Popular Deep Learning Tools – a review
  8. 重新想象 Windows 8 Store Apps (14) - 控件 UI: RenderTransform, Projection, Clip, UseLayoutRounding
  9. 获取camera截屏图片
  10. python中函数的定义,调用,全局变量,局部变量,函数的嵌套使用-初级篇
  11. Java进阶篇(六)——Swing程序设计(下)
  12. Xcode7.3.1中通过最新的CocoaPod安装pop动画引擎
  13. 关于selenium的8种元素定位
  14. PDO查询结果中文乱码
  15. Angularjs中的$q详解
  16. 微信小程序开发(1) 天气预报
  17. Backbone.js 中使用 Model
  18. css3 3d翻转效果
  19. mysql max_allowed_packet参数值改大后,莫名被还原
  20. debug_backtrace final catch

热门文章

  1. 11-散列4 Hashing - Hard Version (30 分)
  2. centos7 中没有service iptables save指令来保存防火墙规则
  3. 【Gamma】Scrum Meeting 8
  4. leetcode 111. 二叉树的最小深度
  5. flink安装启动(docker)
  6. Solr7.x学习(7)-JAVA操作
  7. Kafka支持单集群20万分区
  8. Selenium基础教程(二)环境搭建
  9. Spring JPA事务
  10. python docker api