Java面向对象笔记 • 【第1章 面向对象】

全部章节   >>>>


本章目录

1.1 类和对象

1.1.1 类和对象的概念

1.1.2 类的语法结构

1.1.3 对象的创建和使用

1.1.4 对象和引用

1.1.5 实践练习

1.2 方法的详解

1.2.1 方法的声明

1.2.2 方法调用

1.2.3 方法参数传递

1.2.4 实践练习

1.3 可变形参方法

1.3.1 可变方法声明

1.3.2 可变方法调用

1.3.3 可变参数与数组参数的比较

1.3.4 实践练习

1.4 构造方法

1.4.1 构造方法的定义

1.4.2 构造方法的特点

1.4.3 实践练习

总结:


1.1 类和对象

  • 类和对象是面向对象编程最重要、最核心的两个基本概念
  • 类是对一类事物描述,是抽象的、概念上的定义
  • 对象是实际存在的该类事物的每个个体,因而也称实例(instance)

1.1.1 类和对象的概念

  • 对象表示现实世界中某个具体的事物
  • 抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程
  • 是具有共同属性和行为的对象的抽象
  • 类也称为模板,因为它们提供了对象的基本框架
  • 类可以定义为数据和方法的集合

类和对象的示例

  • 类以共同特性和操作定义实体
  • 类是用于组合各个对象所共有操作和属性的一种机制

对象的示例

属性

  • 事物的特性在类中表示为变量
  • 每个对象的每个属性都拥有其特有的值
  • 属性名称由类的所有实例共享

方法

  • 对象执行的操作称为方法
  • 操作的具体实现
  • 方法指定操作对象数据的方式
  • 在得到操作请求时指定如何做的算法

方法的实例

1.1.2 类的语法结构

 语法:

[修饰符]class类名
{
    定义构造方法;
    定义属性;
    定义方法;
}
  • 修饰符可以是public、final、abstract或完全省略这三个修饰符
  • 类名必须是一个合法的标识符
  • 类中各成员之间的定义顺序对类的定义没有任何影响

1.1.3 对象的创建和使用

声明对象

格式:类名   对象名,例如:Hero hero;

实例化对象

格式对象名 = new 构造方法()例如hero = new 构造方法();

属性的调用

格式:对象.属性,例如hero.name=“zhang san”;

方法的调用

格式:对象名.方法名([参数列表])例如hero.run(30)”;

示例:创建一个英雄对象并测试该对象属性的赋值和方法调用

public class Hero {
	String name; //名字

	//奔跑方法
	public  void  run(int speed){
		System.out.println(speed+"m/s的速度飞速狂奔");
	}
	public static void main(String[] args) {
		//创建英雄对象
		Hero hero = new Hero();
		//通过对象实例调用name属性并为该属性赋值
		hero.name="黑暗游侠";
		System.out.println("英雄的名字:"+hero.name);
		hero1.run(60);//调用hero对象run(speed)方法
	}
}

1.1.4 对象和引用

  • 对象内容放在堆内存

  • 类是一种引用数据类型
  • 对象名是一个引用名
  • 对象名存放着栈内存I栈内存
  • 想比堆内存空间小但读取速度快

1.1.5 实践练习

 

1.2 方法的详解

  • 方法是类或对象的行为特征的抽象
  • 通过方法可以实现对类的属性的操作
  • 功能封装
  • 实现代码模块化重用

1.2.1 方法的声明

语法:


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

  • 修饰符表示方法的访问权限。修饰符有private、缺省访问修饰符、protectedpublic
  • 返回类型为方法返回值的类型(方法没有返回值,则方法的返回类型为void
  • 参数列表表示方法调用时应该传递的参数个数和类型。
  • 定义时为形参,它没有分配内存,运行时才分配内存
  • 如果有多个参数,相邻的参数之间用逗号隔开
  • 对于有返回值的方法,方法体中至少有一条return语句
  • 方法不能嵌套定义

示例:在英雄类中设计一个战斗方法

class Hero {
	 // 定义战斗方法
	 void battle(){  
	/*实现具体的英雄战斗的业务逻辑*/
	  }
  } 

 

1.2.2 方法调用

 在main方法中调用对象的实例方法步骤:

  • 在类的main0方法中创建可以调用方法的实例
  • 将实例赋值给指定的引用变量,通过引用“变量.方法名”的形式调用方法

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

示例:在英雄类中定义战斗方法并测试该方法的调用

public class Hero{	
	String name;
	int age;
    
	public  void  battle(){
	    System.out.println(name+"在肆无忌惮的战斗他的年龄才只有"+age+"可
        		他的血量只有1%了...");
	}
	public static void main(String[] args) {
		Hero hero = new Hero();//创建英雄对象
		hero.name="暗夜魔王";//为name属性赋值
		hero.age = 15;//为age属性赋值
		hero.battle();//使用该对象的battle()方法	
	}
}

 

1.2.3 方法参数传递

参数的传递是指实际参数向形参值的传递的过程。

Java中方法参数的传递方式为值传递。

将实参的副本(复制品)传入给形参

实参本身不会受到任何影响

解释:

Java中的参教传递类似于Dota游戏中英雄使用的幻象

当英雄使用幻象时就会产生一个与该英雄相同的复制品

幻象与英雄本身有相同的能力

但无论该幻象受到任何攻击和伤害都不会影响英雄本身

传入方法的是实参值的复制品,无论方法中对该复制品进行何种操作,实际参数值均不会受到任何影响

示例:方法参数传递过程结果示例

public class Parameter {
	//该方法用于在方法中互换形参值
	public void change(String x,String y){
		String temp;//定义一个临时变量
		System.out.println("***形参改变之前***");
		System.out.println("x="+x+"\t"+"y="+y);
		//形参值互换
		temp=x;//将x值赋值给变量temp
		x=y;//将变量y值赋值给变量x
		y=temp;//将temp值赋值给变量y
		System.out.println("***形参值互换后***");
		System.out.println("x="+x+"\t"+"y="+y);
	}
	public static void main(String[] args){
		Parameter param=new Parameter();//创建Parameter实例
		String a="10",b="20";
		System.out.println("---调用change()方法前---");
		System.out.println("a="+a+"\t"+"b="+b);
		param.change(a, b);//调用方法
		System.out.println("---调用change()方法后---");
		System.out.println("a="+a+"\t"+"b="+b);
	}
}

分析:

调用方法之后,ab的值仍然为1020

即使形式参数的值改变了,但实际参数的值不会改变

 

1.2.4 实践练习

 

1.3 可变形参方法

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

可变形参方法类似于为方法传了一个数组,且在使用方法上也和数组相同

1.3.1 可变方法声明

语法:

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

可变参数只能出现在参数列表的最后

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

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

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,"张小文", "王艺儒", "李晨生");
	}
}

示例:采用数组形参定义方法

public class ArrayTest {
	//采用数组形参来定义方法
	public static void testArray(String[] users) {
		//users当成数组处理
		for (String user : users) {
			System.out.println(user);
		}
	}
 
	public static void main(String[] args) {
	//采用数组形参的方法调用
		testArray(new String[]{"张小文", "王艺儒", "李晨生"});
	}
}

 

1.3.3 可变参数与数组参数的比较

1、定义方式不一样

public static void testVarargs(String…users);//可变形参
public static void testArray(Stringll users);//数组形参

2、调用方式不一样

testVarargs(“张小文”,”王艺儒”,“李晨生”;//可变形参
testArray(new String[] {“张小文”,“王艺儒”,“李晨生”});//数组形参

3、参数位置不一样

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

1.3.4 实践练习

 

1.4 构造方法

1.4.1 构造方法的定义

  • 构造方法是一种特殊的方法
  • 它是一个与类同名且返回值类型为同名类类型的方法
  • 对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化当类实例化一个对象时会自动调用构造方法
  • 构造方法和其他方法一样也可以重载。

 

1.4.2 构造方法的特点

  • 构造方法的功能主要用于在类的对象创建定义时进行状态的初始化
  • 构造方法的命名必须和类名完全相同。构造方法没有返回值,也不能用void来修饰在Java中普通方法可以和构造方法同名,但是必须带返回值
  • 构造方法不能直接调用,必须通过new运算符在创建对象时才会自动调用
  • 当定义一个类的时候,通常情况下都会显示该类的构造方法,并且在方法中指定初始化的工作也可以省略,不过Java编译器会提供一个默认的构造方法,此默认构造函数是不带参数的,而一般方法不存在这一特点

1.4.3 实践练习

 

总结:

  • 是具有共同属性和行为的对象的抽象,对象的具体实例
  • 类是一个具有自身属性和行为的独立单位。方法的四个要素是:方法名、参数列表、返回类型和访问修饰符
  • 构造方法是一类名称与类同名,且没有返回类型的特殊方法
  • 对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化
  • 使用“对象名.属性”引用属性,以及“对象.方法(参数列表)”调用方法
  • 如果在定义方法时,在最后一个形参的类型后增加三点“...”,则表明该形参 
  • 可以接受多个参数值,多个参数值被当成数组传入

 

  • 45
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
Java面向对象程序设计第三版耿祥义第一主要介绍了Java的基础知识和面向对象的概念。 1. Java语言的特点 Java语言是一种面向对象编程语言,具有以下特点: - 简单易学:Java语言的语法类似C++,但是去掉了C++中比较难理解的特性,使得Java更加容易学习和使用。 - 面向对象Java语言是一种纯面向对象编程语言,所有的程序都是由对象组成的。 - 平台无关性:Java语言可以在不同的操作系统和硬件平台上运行,只需要安装相应的Java虚拟机即可。 - 安全性:Java语言的安全性非常高,可以在不信任的环境下运行程序,避免了一些安全漏洞。 - 高性能:Java语言的运行速度比较快,且可以通过各种优化技术来提高性能。 2. 面向对象的概念 面向对象是一种软件设计的思想,其核心是将问题看作是由对象组成的。对象是指具有一定属性和行为的实体,属性对象的特征,行为是对象的动作。 在面向对象的设计中,需要考虑以下几个方面: - 类的设计:类是创建对象的模板,需要定义类的属性方法。 - 对象的创建:创建对象,需要使用new关键字来调用类的构造方法。 - 对象的访问:访问对象属性方法,需要使用点号操作符来进行访问。 - 继承和多态:继承是指一个类可以继承另一个类的属性方法,多态是指同一种行为可以用不同的方式实现。 3. Java的基础知识 Java语言的基础知识包括数据类型、运算符、流程控制语句等。 - 数据类型:Java语言的数据类型包括基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、字符型和布尔型,引用数据类型包括类、接口、数组等。 - 运算符:Java语言的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。 - 流程控制语句:Java语言的流程控制语句包括if语句、switch语句、for循环、while循环、do-while循环等。 4. Java程序的基本结构 Java程序的基本结构包括类的定义、方法的定义和语句块的定义。 - 类的定义:类是Java程序的基本组成单元,需要使用class关键字来定义类。 - 方法的定义:方法是类中的一个函数,用于实现特定的功能,需要使用方法名、参数列表和返回类型来定义方法。 - 语句块的定义:语句块是一组语句的集合,需要使用大括号来定义语句块。 总的来说,Java面向对象程序设计第三版耿祥义第一介绍了Java语言的基础知识和面向对象的概念,为后续的学习打下了基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明金同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值