Java面对对象程序设计:第一章 面对对象

1.1 类与对象

 1.1.1类和对象的概念

( 如果不想看这些长篇大论,可以直击跳到下面的案例。)

类是抽象的,对象是具体的;类是对象的模板,图纸;对象是类的一个实例,是一个实实在在的个体,一个类可以对应多个对象。

1.1.2 类的语法结构

[修饰符] class 类名{
      定义构造方法;
      定义属性;
      定义方法;
}

在上述的语法格式中,修饰符可以是public,final,abstract或完全省略这3个修饰符,而类名只要一个合法的标识符就行,当然从程序的可读性而言,java类名必须由一个或多个由意义的单词组合而成的,每个单词首字母必须大写,其它字母全部小写。单词与单词之间不要使用任何分隔符。

!注意:类中各成员之间的定义顺序对程序没有任何影响。

1.1.3 对象创建和使用

在java语言中创建对象的根本途径是,通过new关键词通用某个类的构造方法,即可创建该类的实例。

对象的创建和使用:

对象的创建
类名 对象名  = new 类名();
方法的调用
对象名.方法名([参数]);

当一个对象被创建成功后,该对象将保存在堆内存中,java程序不允许直接访问堆内存中的对象,只能通过该对象的引用访问该数组。无论是数组还是对象,都只能通过引用来访问它们。

!注意:无论是数组还是对象,当程序访问引起用变量的属性或方式时,实际时访问该引用变量所引用的数组,对象的属性或方法 

1.2 方法详解

1.2.1 方法声明

方法的声明包含方法头和方法体两部分,方法的声明格式如下:

[<修饰符>] <返回值类型> <方法名> ([参数列表]){方法体} 

方法声明说明如下:

(1)修饰符,表示方法的访问权限。

(2)返回值类型,为该方法返回值的类型,如该方法没有返回值,则该方法的返回值类型为void

(3)参数列表,指定在调用时,应该传递的参数的个数和类型。

(4)对于有返回值类型的方法,方法体中至少有一条return语句,形式为return(表达式)。

(5)方法不能嵌套定义,即不能在方法中声明其它的方法。

1.2.2 方法的调用

(1)在类main() 方法中创建可以调用方法的实例。

(2)将实例赋值给指定的引用变量,通过引用“变量.方法名”的形式调用方法。

说明:如果方法的返回值类型为void,说明方法没有返回值,所以在main()方法中调用时,可以将子方法作为一条语句直接在程序中使用。

1.3 可变形参方法

1.3.1 可变方法声明

从JDK1.5之后,java允许定义形参个数可变的参数,即可允许方法指定数量不确定的形参。如果在定义方法时,在最后一个形参的类型后增加“...”,则表明该形参可以接受多个参数值,多个参数值被当成数组传染。

可变方法的声明格式如下:

[<修饰符>] <返回类型> <方法名> (变量类型...变量名){方法体} 

方法声明说明:变量类型为任意数据类型,在变量类型和变量名之间用“...”表示.其中“...”不是省略号,而是定义参数类型的方式。

可变参数的特点如下:

(1)只能出现在参数列表的最后

(2)“...”位于变量类型和变量名之间,前后有无空格都可以。

(3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中可以一数组的形式访问可变参数。

1.3.2 可变方法调用

直接看代码:

public class VarargsTest{
  //定义形参个数可变的方法
  public static void testVarargs(int x,String...users){
      for(String user:users){
          System.out.println(user);
      }
  }
  public static void main(String[] args){
      //采用可变个数形参的方法调用
      testVarargs(3,"张晓文","王艺儒","李晨生")
  }
}

你可以把代码直接复制过去结果。

1.3.3 可变参数与数组参数的区别

1.定义方式不一样

(1)采用可变个数参数来定义方法,代码如下:

public static void testVarargs(String...users);

(2)采用数组形参来定义方法,代码如下:

public static void testVarargs(String[] users);

2.调用的方式不一样

(1)采用可变个数形参的方法调用,代码如下:

testTarargs("陈夏文","万怡然","李晨生");

(2)采用数组形参的方法调用,代码如下:

testVarargs(new String[]{"陈夏文","万怡然","李晨生"});

3.参数位置不同

如果有多个参数,数组形式的参数可以处于形参的任意位置,但是个数可变的形参处于形参列表的最后,即一个方法最多只能有一个个数可变的形参。

1.4 构造方法

1.4.1 构造方法的定义

在类定义中有一类特殊的方法,此方法的名称与类名完全一致,在创建对象是用于成员变量进行初始化,此类方法被称为构造方法。

1.4.2 构造方法

创建一个构造方法和创建一个其它方法的过程是相同的,但需要注意的是,类中的构造方法的名称必须与此类的名称完全相同;此外,构造方法不能有返回值类型,在构造方法法名称前面也不能使用void关键词进行修饰。

构造方法的格式如下:

public 类名(){}

1.5 属性 

属性是直接定义在类里面的又称成员变量

案例:

 讲这么多也没什么大用,还是需要练习,下面这题将用到这篇文章所要讲到的知识

题目如下:

需求:

类:

1、类名:Yasuo

2、属性

  1. 剑的名字
  2. 技能一(斩钢闪)
  3. 技能二(风之壁障)
  4. 技能三(踏前斩)
  5. 技能四(狂风绝息斩 or 哈塞给)
  1. 方法
  1. 构造方法:

参数:剑名

功能:使用参数“剑名”给属性“剑的名字”赋值

  1. 出击:

参数:可变参数,参数为技能列表

返回值:无

功能:根据接收到的技能列表,施展相应的技能。结果:输出:Yasuo使用xx剑施展了xx技能

例如

  1. 接收到的参数列表为“斩钢闪”,剑的名字是“长剑”,则输出:Yasuo使用长剑施展了斩钢闪
  2. 接收到的参数为斩钢闪、狂风绝息斩,剑的名字是长剑,则输出:Yasuo使用长剑施展了斩钢闪和狂风绝息斩

3、嘲讽

参数:无

返回值:无

功能:对敌方进行嘲讽,输出:好了,我要用手玩了

在主类中调用Yasuo类的出击和嘲讽方法,输出相应的内容

答案如下:

package LOL;

public class Yasuo {
	String name;
	String skill1 = "斩刚闪";
	String skill2 = "风之壁障";
	String skill3 = "踏前斩";
	String skill4 = "狂风绝息斩";
	public Yasuo(String name1){
		name = name1;
	}
	public void Chuji(String...skills){
		String string = "";
		int a = 0;
		for(String jinen:skills){
			if(a == 0){
				string = string + jinen;
			}else{
				string = string + "和" +jinen;
			}
			a++;
		}
		System.out.printf("Yasuo使用了%s施展了%s技能\n",name,string);
	}
	public void Chaofen(){
		System.out.println("击杀敌人之后原地回城并亮狗牌");
	}
	public static void main(String[] args) {
		Yasuo c = new Yasuo("无尽之刃");
		c.Chuji(c.skill1,c.skill4);
		c.Chaofen();
	}

}

如果想看上述语句执行结果,请复制粘贴,自己去运行看看。

好了,我的这篇文章到这里就结束啦,如果还有什么不懂的,请自行去看书,或者自己去找其它文章看,如果你问我为什么这样,那我告诉你——我这是免费的,所以不要抱怨我的文章,因为我也知道我没有写好,所以拜拜了。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值