`
x125521853
  • 浏览: 72702 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

第一章 类与方法简介

阅读更多

一:类

    理解类的最重要的事情就是它定义了一种新的数据类型。一旦定义后,就可以使用这个新类型创建该类型的对象.因此,类是对象的模板,而对象就是类的实例,因为对象是类的一个实例。

    类是一种自定义的抽象的数据类型,可以想像成某种类型事物的统称,比如, 小张,小李,小赵都是学生,那到底学生是个什么东西呢,我们可以想像一样,学生就是具有姓名,年龄,班级,学习成绩,需要上学,放学,写作业的一类抽象事物的统称.

    面向对象的思想将现实世界中的客观事物描述成具有属性和行为的对象,通过抽象出同一类对象的共同属性和行为,形成类.

    比如说学生有姓名, 性别, 年龄, 语文成绩, 数学成绩, 英文成绩这些特点, 那我们在程序中怎么表示这些特点呢, 小张, 小李, 小赵这三个学生又怎么表示呢.

   //示例1:(StudentDemo01.java):   

class Student
{
	String stdName; //学生姓名
	String stdSex; //学生性别
	int stdAge; //学生年龄
	double chineseMark; //语文成绩
	double mathMark; //数学成绩
	double englishMark; //英文成绩
}

class StudentDemo01
{
	public static void main(String[] args)
	{
		//实例化学生小张
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		//初始化各个属性
		stdZhang.stdName = "小张";
		stdZhang.stdSex = "男";
		stdZhang.stdAge = 20;
		stdZhang.chineseMark = 98;
		stdZhang.mathMark = 99;
		stdZhang.englishMark = 100;
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdZhang.stdName);
		System.out.println("我的性别是:" + stdZhang.stdSex);
		System.out.println("我的年龄是:" + stdZhang.stdAge);
		System.out.println("我的语文成绩是:" + stdZhang.chineseMark);
		System.out.println("我的数学成绩是:" + stdZhang.mathMark);
		System.out.println("我的英文成绩是:" + stdZhang.englishMark);
		System.out.println();

		//实例化学生小李
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//初始化各个属性
		stdLi.stdName = "小李";
		stdLi.stdSex = "女";
		stdLi.stdAge = 18;
		stdLi.chineseMark = 88;
		stdLi.mathMark = 89;
		stdLi.englishMark = 90;
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdLi.stdName);
		System.out.println("我的性别是:" + stdLi.stdSex);
		System.out.println("我的年龄是:" + stdLi.stdAge);
		System.out.println("我的语文成绩是:" + stdLi.chineseMark);
		System.out.println("我的数学成绩是:" + stdLi.mathMark);
		System.out.println("我的英文成绩是:" + stdLi.englishMark);
		System.out.println();

		//实例化学生小赵
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//初始化各个属性
		stdZhao.stdName = "小赵";
		stdZhao.stdSex = "女";
		stdZhao.stdAge = 22;
		stdZhao.chineseMark = 78;
		stdZhao.mathMark = 79;
		stdZhao.englishMark = 70;
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdZhao.stdName);
		System.out.println("我的性别是:" + stdZhao.stdSex);
		System.out.println("我的年龄是:" + stdZhao.stdAge);
		System.out.println("我的语文成绩是:" + stdZhao.chineseMark);
		System.out.println("我的数学成绩是:" + stdZhao.mathMark);
		System.out.println("我的英文成绩是:" + stdZhao.englishMark);
		System.out.println();

	}
}

    可以看到声明类要使用class关键词,在一个class内定义的数据或变量称为成员变量.   

   可以看到我这里把两个class写在了一个文件中.

    一个是Student,它是抽象数据模型类

    一个是StudentDemo01. 它是程序运行类.

 

二:创建对象

   1.当创建一个类时,就创建了一个新的数据类型,可以使用该类型来声明对象,实际上,获取类的对象是一个分为两步的过程:

   首先,必须声明该类型的一个引用,这个引用不定义一个对象,它只是一个可以引用一个对象的引用,
   其次,必须为该对象分配实际的物理内存,就是用new关键字来分配内存, 然后将引用和分配的内存进行绑定.

   2.类和对象之间的区别:类创建一种新的数据类型, 可以使用这种新的数据类型来创建对象,也就是类创建一个定义它的成员之间关系的逻辑框架.当声明一个类的对象时,就是正在创建该类的一个实例,因此,类是一个逻辑结构,而对象具有物理真实性(即对象在内存中占有空间).

   3.Student std1 = new Student();
     Student std2 = std1;

 

     此时,std1std2指向同一个对象为null

      null 非常特殊,它是万能对象,可以表示任何对象, 它在内在中不存在内存空间, null用来表示一个引用没有实例存在.

      String str1 = null; str1是null,那么内存根本没创建字符串对像
      String str2 = ””; 确实存在一个由str2引用的字符串对像,只不过这个字符串的值是""
 .

 

三:方法介绍

   1.type name(parameterList){
       ...方法的实现
     }

     其中type指定了该方法返回的数据类型. 这可以是任何有效的类型, 包括创建的类的类型,如果该方法不返回值, 它的返回类型一定得是void。

     方法名是由name指定,可以自己定义,但是得有意义,不能定义成a,b,c等等无意义的名字.

     parameterList参数列表是一个用逗号分开的类型和标识符序列,参数本质上是变量,对应于方法被调用时所需要的实际参数.如果方法没有参数,则参数列表将为空.

     返回类型不是void的方法将使用下面的形式return语句把一个值返回给调用程序.
     return value;  其中value是返回的值.

   2.没有返回值,没有参数列表的方法

  //示例2:StudentDemo02.java  

class Student
{
	String stdName; //学生姓名
	String stdSex; //学生性别
	int stdAge; //学生年龄
	double chineseMark; //语文成绩
	double mathMark; //数学成绩
	double englishMark; //英文成绩

	void introductionSelf()
	{
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdName);
		System.out.println("我的性别是:" + stdSex);
		System.out.println("我的年龄是:" + stdAge);
		System.out.println("我的语文成绩是:" + chineseMark);
		System.out.println("我的数学成绩是:" + mathMark);
		System.out.println("我的英文成绩是:" + englishMark);
		System.out.println();
	}
}

class StudentDemo02
{
	public static void main(String[] args)
	{
		//实例化学生小张
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		//初始化各个属性
		stdZhang.stdName = "小张";
		stdZhang.stdSex = "男";
		stdZhang.stdAge = 20;
		stdZhang.chineseMark = 98;
		stdZhang.mathMark = 99;
		stdZhang.englishMark = 100;
		stdZhang.introductionSelf();		

		//实例化学生小李
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//初始化各个属性
		stdLi.stdName = "小李";
		stdLi.stdSex = "女";
		stdLi.stdAge = 18;
		stdLi.chineseMark = 88;
		stdLi.mathMark = 89;
		stdLi.englishMark = 90;
		stdLi.introductionSelf();

		//实例化学生小赵
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//初始化各个属性
		stdZhao.stdName = "小赵";
		stdZhao.stdSex = "女";
		stdZhao.stdAge = 22;
		stdZhao.chineseMark = 78;
		stdZhao.mathMark = 79;
		stdZhao.englishMark = 70;
		stdZhao.introductionSelf();
	}
}

   这里的void是没有返回值, introductionSelf()是方法名, 括号里没有参数列表,则说明这个方法不需要传递参数.大括号内的内容是方法的实现部分.
然后我们在程序中调用时可以通过stdZhang.introductionSelf(); 来调用此方法.

 

   3.有参数列表,没有返回值的方法的写法

  //示例3:StudentDemo03.java  

class Student
{
	String stdName; //学生姓名
	String stdSex; //学生性别
	int stdAge; //学生年龄
	double chineseMark; //语文成绩
	double mathMark; //数学成绩
	double englishMark; //英文成绩

	//自我介绍功能
	void introductionSelf()
	{
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdName);
		System.out.println("我的性别是:" + stdSex);
		System.out.println("我的年龄是:" + stdAge);
		System.out.println("我的语文成绩是:" + chineseMark);
		System.out.println("我的数学成绩是:" + mathMark);
		System.out.println("我的英文成绩是:" + englishMark);
		System.out.println();
	}

	//演示this关键字的作用
	void initSelf(String _stdName,String _stdSex,int _stdAge, double _chineseMark,double _mathMark,double _englishMark)
	{		
		stdName = _stdName;
		stdSex = _stdSex;
		stdAge = _stdAge;
		chineseMark = _chineseMark;
		mathMark = _mathMark;
		englishMark = _englishMark;
		
	}
}

class StudentDemo03
{
	public static void main(String[] args)
	{
		//实例化学生小张
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("小张","男",28, 98D,95D,97D);
		stdZhang.introductionSelf();
		

		//实例化学生小李
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//初始化各个属性
		stdLi.initSelf("小李","女",28, 88D,85D,87D);
		stdLi.introductionSelf();

		//实例化学生小赵
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//初始化各个属性
		stdZhao.initSelf("小赵","女",22, 78D,75D,77D);
		stdZhao.introductionSelf();

	}
}

   

    4.有返回值,没有参数列表的方法的写法.

  //示例4:StudentDemo04.java  

class Student
{
	String stdName; //学生姓名
	String stdSex; //学生性别
	int stdAge; //学生年龄
	double chineseMark; //语文成绩
	double mathMark; //数学成绩
	double englishMark; //英文成绩

	//自我介绍
	void introductionSelf()
	{
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdName);
		System.out.println("我的性别是:" + stdSex);
		System.out.println("我的年龄是:" + stdAge);
		System.out.println("我的语文成绩是:" + chineseMark);
		System.out.println("我的数学成绩是:" + mathMark);
		System.out.println("我的英文成绩是:" + englishMark);
		
	}

	//初始化
	void initSelf(String stdName,String stdSex,int stdAge, double chineseMark,double mathMark,double englishMark)
	{		
		this.stdName = stdName;
		this.stdSex = stdSex;
		this.stdAge = stdAge;
		this.chineseMark = chineseMark;
		this.mathMark = mathMark;
		this.englishMark = englishMark;
		
	}

	//算成绩平均分的功能
	double markAvg()
	{
		double mark = 0D;
		mark = (chineseMark + mathMark + englishMark)/3;
		return mark;
	}
}

class StudentDemo04
{
	public static void main(String[] args)
	{
		double mark = 0; //定义变量,接收平均分
		//实例化学生小张
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("小张","男",28, 98D,98D,98D);
		stdZhang.introductionSelf();
		mark = stdZhang.markAvg();
		System.out.println("我的成绩平均分是:" + mark);
		//System.out.println("我的成绩平均分是:" + stdZhang.markAvg());
		System.out.println();

		//实例化学生小李
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//初始化各个属性
		stdLi.initSelf("小李","女",28, 88D,88D,88D);
		stdLi.introductionSelf();
		System.out.println("我的成绩平均分是:" + stdLi.markAvg());
		System.out.println();

		//实例化学生小赵
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//初始化各个属性
		stdZhao.initSelf("小赵","女",22, 78D,78D,78D);
		stdZhao.introductionSelf();
		System.out.println("我的成绩平均分是:" + stdZhao.markAvg());
		
	}
}

 

    5.有返回值,有参数列表的方法的写法

  //示例5:StudentDemo05.java  

class Student
{
	String stdName; //学生姓名
	String stdSex; //学生性别
	int stdAge; //学生年龄
	double chineseMark; //语文成绩
	double mathMark; //数学成绩
	double englishMark; //英文成绩

	//自我介绍
	void introductionSelf()
	{
		System.out.println("自我介绍");
		System.out.println("我的名字是:" + stdName);
		System.out.println("我的性别是:" + stdSex);
		System.out.println("我的年龄是:" + stdAge);
		System.out.println("我的语文成绩是:" + chineseMark);
		System.out.println("我的数学成绩是:" + mathMark);
		System.out.println("我的英文成绩是:" + englishMark);
		
	}

	//初始化
	void initSelf(String stdName,String stdSex,int stdAge, double chineseMark,double mathMark,double englishMark)
	{		
		this.stdName = stdName;
		this.stdSex = stdSex;
		this.stdAge = stdAge;
		this.chineseMark = chineseMark;
		this.mathMark = mathMark;
		this.englishMark = englishMark;
		
	}

	//算成绩平均分的功能
	double markAvg()
	{
		double mark = 0D;
		mark = (chineseMark + mathMark + englishMark)/3;
		return mark;
		//return (chineseMark + mathMark + englishMark)/3;
	}

	//平均成绩的比较方法,
	boolean markEquals(Student std)
	{
		return this.markAvg() > std.markAvg();
	}
}

class StudentDemo04
{
	public static void main(String[] args)
	{		
		//实例化学生小张
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("小张","男",28, 98D,98D,98D);
		stdZhang.introductionSelf();
		double mark = stdZhang.markAvg();//接收平均分的返回值
		System.out.println("我的成绩平均分是:" + mark);
		//System.out.println("我的成绩平均分是:" + stdZhang.markAvg());		
		System.out.println();

		//实例化学生小李
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//初始化各个属性
		stdLi.initSelf("小李","女",28, 88D,88D,88D);
		stdLi.introductionSelf();
		System.out.println("我的成绩平均分是:" + stdLi.markAvg());
		System.out.println();

		//实例化学生小赵
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//初始化各个属性
		stdZhao.initSelf("小赵","女",22, 78D,78D,78D);
		stdZhao.introductionSelf();
		System.out.println("我的成绩平均分是:" + stdZhao.markAvg());	
		
		
	}
}

 

四:static的作用

   如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main()。因为在程序开始执行时必须调用main() ,所以它被声明为static。

 

 

 

分享到:
评论

相关推荐

    C#第一章简介

    总的来说,C#第一章的学习旨在为后续的面向对象编程打下坚实的基础,包括理解基本语法、类与对象的概念以及如何在控制台上进行基本的交互操作。随着对这些基础知识的掌握,开发者可以逐步构建更复杂的应用程序。

    深入.NET平台和C#编程(.NETOOP)第一章

    4. **对象和类**: 面向对象编程(OOP)是C#的核心特性,第一章会详细解释类的概念,包括类的定义、属性、方法、构造函数和析构函数,以及对象的创建和使用。 5. **继承与多态**: 继承是OOP中的重要概念,允许一个类...

    ACCP5.0 第一学期 HTML 第一章 课后练习题+作业课后题

    描述中提到了"ACCP5.0 第一学期 JAVA 第一章 课后练习题+作业课后题",虽然与标题略有不同,但可以推测这可能是一个包含HTML和Java两个部分的学习资源包。ACCP5.0是北大青鸟教育机构的一个IT培训课程,其课程设计...

    数电第一章答案

    根据提供的文件信息,标题为“数电第一章答案”,描述为“南理工数字逻辑电路与系统设计 答案第一章”,标签为“答案”。这表明这是一个关于南京理工大学《数字逻辑电路与系统设计》课程第一章的答案文档。由于实际...

    高频电子线路课件 第一章

    本课件“高频电子线路课件 第一章”是针对该课程的第一部分,由张肃文教授编著,基于高等教育出版社出版的第四版教材。这份课件因其内容详实、解析独特、深入浅出而备受赞誉,不仅是课堂学习的优秀辅助材料,也是...

    ACCP5.0 S1Java第一章答案

    【ACCP5.0 S1 Java第一章答案】涵盖了初学者在学习Java编程语言时的基础知识点。ACCP(Advanced Certified Computer Professional)是一个针对计算机专业人士的认证课程,而S1(可能是"Stage 1"的缩写)是这个课程的...

    Java学习第3章类的方法异常.ppt

    总之,Java学习第三章关于类的方法和异常处理,主要教授了如何控制方法的执行流程,通过if和switch等选择结构进行条件判断,使用异常处理机制来应对程序运行中的错误,以及如何通过方法重载实现更灵活的编程。...

    java面向对象和第一章整理笔记

    - **继承**:一个类可以继承另一个类的属性和方法,实现代码复用,形成类的层次结构。 - **多态**:同一消息(方法调用)可以有不同的响应,依赖于接收消息的对象类型。 - **抽象**:抽象类或接口用于定义共性,...

    大数据分析与数据挖掘课程 医疗数据挖掘课程 临床数据挖掘线下课程 第3章 数据挖掘方法 - 分类与聚类 共134页.ppt

    【课程简介】 本课程适合所有需要学习临床大数据挖掘知识的同学...临床大数据挖掘线下课程 第4章 数据挖掘方法-关联规则与贝叶斯网络 共44页.ppt 临床大数据挖掘线下课程 第5章 数据挖掘方法-列线图的绘制 共28页.pptx

    java 第一章的课后作业

    第一个构造器为 `Student2` 对象设置基本属性,第二个构造器提供了更多的自定义选项。 ### 访问控制修饰符 访问控制修饰符用于控制类、方法或变量的可见性。在 `Student1` 类中可以看到 `private` 修饰符的使用: `...

    第一章_Ogre简介

    3. **编写你的第一个Ogre程序** - 要创建一个Ogre程序,首先需要建立解决方案,创建一个新的空项目,然后配置项目属性,包括头文件和库文件的位置,以及依赖库的设置。接着,编写必要的代码,如`ExampleApplication`...

    JBuider第一章:Java面向对象语言简介.rar

    本压缩包文件“JBuider第一章:Java面向对象语言简介.rar”可能包含的是关于Java面向对象编程基础的教程资料,适合初学者学习。在Java中,面向对象编程(Object-Oriented Programming, OOP)是核心概念,它基于类和...

    第3章(类的方法).ppt

    在本章"第3章(类的方法)"中,我们深入探讨了Java编程中与类方法相关的几个关键概念,包括方法的控制流程、异常处理简介、方法的重载以及本章的小结。以下是对这些主题的详细说明: 1. **方法的控制流程**: - **...

    第一行代码Java源代码第1章课程代码Java简介共1

    【标题】"第一行代码Java源代码第1章课程代码Java简介共1" 指的是一个关于Java编程语言入门的教程,源自郭霖的畅销书《第一行代码——Java》的第一章。这个标题暗示了内容可能涵盖了Java编程的基础概念,可能是为了...

    自动控制理论第3版_第1章答案

    通过对《自动控制理论》第三版第一章内容的梳理与总结,我们不仅可以了解到自动控制领域的基础知识和技术框架,还能掌握解决实际问题所需的一些基本技能。希望以上内容能够帮助读者更好地理解和掌握这一章的知识点,...

    python第一章01【视频教程】_课程简介.zip

    本教程的标题"python第一章01【视频教程】_课程简介.zip"表明这是一份关于Python编程的基础教学资源,聚焦于第一章的内容,并且提供了视频形式的教学,对于视觉学习者来说非常友好。"课程简介"部分通常会涵盖整个...

    Java 语言程序设计 基础版 第十版 第一章--第五章 课后编程练习题答案

    **第一章:Java简介** 在这一章,你将学习Java的历史、应用领域,以及为什么它如此受欢迎。重点包括Java的平台独立性(Java虚拟机JVM)和"一次编写,到处运行"的理念。此外,还将介绍基本的Java开发环境,如集成开发...

    Java程序设计与数据结构第一章习题答案

    在Java程序设计与数据结构的学习过程中,第一章通常是基础入门,主要涵盖了Java编程语言的基本概念、语法和编程思想。本章的习题答案旨在帮助初学者巩固基础知识,理解并掌握核心概念,为后续深入学习打下坚实的基础...

    第一章神经网络第一节神经网络简介1

    反向传播算法是训练这类网络的主要方法。在前向传播阶段,输入数据通过网络层层传播得到预测结果。然后,通过比较预测结果与真实标签,计算误差。反向传播阶段,误差从输出层逆向传播回输入层,更新每个权重以减小...

Global site tag (gtag.js) - Google Analytics