Java语言——类

在Java语言中经常提到类和对象,实质上可以将类看作是对象的载体,它定义了对象所具有的功能。面向对象程序设计具有以下特点:封装性、继承性和多态性。


Java语言

一、类

1.成员变量

在Java中对象的属性也称为成员变量。成员变量声明在类体中,局部变量声明在方法体中。示例代码如下:

package com.example;

public class Book {
   private String name;//定义一个String型的成员变量
   public String getName(){//定义一个getName()方法
       int id=0;//局部变量
       setName("java");//调用类中其他方法
       return id+this.name;//设置方法返回值
   }
   private void setName(String name){
       this.name=name;
   }
   public Book getBook(){
       return this;//返回Book类引用
   }
}

2.成员方法

在Java语言中使用成员方法对应于类对象的行为。上述代码为例,Book类中包含了getName()和setName()两个方法。定义成员方法的语法格式如下:

权限修饰符  返回值类型  方法名(参数类型  参数名){
              ...//方法体
             return  返回值;
}

一个成员方法可以有参数,这个参数可以是对象也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值可以在方法体中使用return关键字,使用这个关键字后,方法的执行将被终止。在成员方法中可以调用其他成员方法和类成员变量。如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行。

3.权限修饰符

Java中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如下图所示:

Java语言中的修饰符权限

如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果将类的成员变量和成员方法的访问权限设置为public,那么除了可以在本类使用这些数据之外,还可以在子类和其他包的类中使用。如果一个类的访问权限被设置为private,这个类将隐藏其内的所有数据,以免用户直接访问它。

4.局部变量

如果在成员方法中定义一个变量,那么这个变量被称为局部变量。如下代码所示,getName()方法中的id变量即为局部变量。实际上方法中的形参也可以作为一个局部变量,如在定义setName(String name)方法时,String name这个形参就被看作是局部变量。局部变量是在方法被执行时创建,在方法执行结束时销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。

   public String getName(){//定义一个getName()方法
       int id=0;//局部变量
       setName("java");//调用类中其他方法
       return id+this.name;//设置方法返回值
   }

5.局部变量的有效范围

局部变量的有效范围又可以称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。如下图所示:

局部变量的作用范围

6.this关键字

  private void setName(String name){
       this.name=name;
   }

在上述代码中,成员变量与setName()方法中的形参的名称相同,都为name。在Java语言中,规定使用this关键字来代表本类对象的引用,this关键字被隐式的用于引用对象的成员变量和方法。this可以调用成员变量和成员方法,但在Java语言中最常规的调用方式是使用“对象.成员变量”或“对象.成员方法”进行调用。

二、类的构造方法

构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。构造方法的特点如下:
(1)构造方法没有返回值。
(2)构造方法的名称要与本类的名称相同。
构造方法的定义语法格式如下:

public book(){
  //...构造方法体
}

public:构造方法修饰符。
book:构造方法的名称。
在构造方法中可以为成员变量赋值,这样当实例化一个本类对象时,相应的成员变量也将被赋值。如果类中没有明确定义构造方法,编译器会自动创建一个不带参数的默认构造方法。

三、静态变量、常量和方法

由static修饰的变量、常量和方法被称作静态变量、常量和方法。被声明为static的变量、常量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。语法如下:

类名.静态类成员

示例代码如下:

package com.example;

public class StaticTest {
 static double PI=3.1415;//在类中定义静态常量
 static int id;//在类中定义静态变量
 public static void method1(){//在类中定义静态方法
     //doSomething
 }
 public void method2(){//在类中定义非静态方法
     System.out.println(StaticTest.PI);//调用静态常量
     System.out.println(StaticTest.id);//调用静态变量
     StaticTest.method1();//调用静态方法
 }
}

在Java语言中对静态方法有两点规定:
(1)在静态方法中不可以使用this关键字。
(2)在静态方法中不可以直接调用非静态方法。

四、类的主方法

主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。主方法的语法如下:

public static void main(String[] args){
//方法体
}

主方法具有以下特性:
(1)主方法是静态的,所以如要直接在主方法中调用其他方法,那该方法必须也是静态的。
(2)主方法没有返回值。
(3)主方法的形参为数组。其中args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数。

学习是一件很快乐的事,这种快乐来自于你的思考。完成一项学习任务固然重要,但更重要的是在完成的过程中学到了什么,掌握了什么,遇到一些什么问题,为什么会出现这种问题,根源是什么,都有哪些解决方案,什么样的情况适合这个方案。只有在不断的思考,你的能力才会有所提升!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,627评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,558评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,059评论 0 62
  • 以前读书,看到项羽那句“富贵不归故乡,如锦衣夜行,谁人知之者”总和其他人一般嗤笑着他的短视好面子,远不如太祖 “埋...
    倚剑_听雪阅读 513评论 0 0
  • 最近过的还好吗? 今天讲的故事有关于男神,百度百科告诉我,男神是一种可望而不可及的存在。而我的身边,有很多的...
    森森iii阅读 339评论 0 0