Java之面向对象第一节

面向对象思想

什么是对象(Object)?

万事万物皆对象,对象拥有行为与属性。例如:人(性别,名字)

什么是类(class)

根据事物的共同特征,我们把这些事物抽象为一个类

类是用来描述对象的,或也可以说类是对象的模板,对象是类的示例

类中的数据定义为属性,行为特征定义为方法。

定义类

语法:

[修饰范围] class 类名{

[属性]

[方法]

[构造器]

}

定义属性

语法:

类型 属性名 [= 值]

解释:如果没有为属性赋值,在创建对象时系统会为对象的每个属性分配默认值

默认值如下:

byte\short\int\long  默认  0

float\double  默认 0.0

boolean  默认 false

char   默认   \u0000  

引用类型  默认  null

又将属性称为 全局变量\成员变量

调用方法:对象.属性;

定义方法

定义方法就是定义了一段过程(一些事物的描述、是一些计算过程、流程控制)定义一个过程的结构。

调用方法:对象.方法();

语法:(方法的命名第一个单词首字母小写从第二个开始大写首字母)

[修饰范围] 返回值的类型  方法名([参数,参数..]){

	语句;

	[return 值 ]     

}

例如:
public static 返回值类型 方法名称 (类型 参数1,类型 参数2,...){
	
	方法的主体
	程序语句;
   【return 表达式】
}


无返回:
public class MethodDemo01{
	public static void main(String args[]){
		printInfo() ;		// 调用printInfo()方法
		printInfo() ;		// 调用printInfo()方法
		printInfo() ;		// 调用printInfo()方法
		System.out.println("Hello World!!!") ;
	}
	public static void printInfo(){
		char c[] = {'H','e','l','l',
			'o',',','L','X','H'} ;	// 定义字符数组
		for(int x=0;x<c.length;x++){	// 循环输出
			System.out.print(c[x]) ; 
		}
		System.out.println("") ;	// 换行
	}
};

有返回:
public class MethoDemo02{
	public static void main(String args[]){
		int one = addOne(10,20) ;		// 调用整型的加法操作
		float two = addTwo(10.3f,13.3f) ;	// 调用浮点数的加法操作
		System.out.println("addOne的计算结果:" + one) ;
		System.out.println("addTwo的计算结果:" + two) ;
	}
	// 定义方法,完成两个数字的相加操作,方法返回一个int型数据
	public static int addOne(int x,int y){
		int temp = 0 ;			// 方法中的参数,是局部变量
		temp = x + y ;			// 执行加法计算
		return temp ;			// 返回计算结果
	}
	// 定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
	public static float addTwo(float x,float y){
		float temp = 0 ;		// 方法中的参数,是局部变量
		temp = x + y ;			// 执行加法操作
		return temp ;			// 返回计算结果
	}
};


注意:
	如果方法中有void就表示这个方法没有返回值,不可以使用return返回内容。
	return可以返回一个方法的结果,也可以使用return结束一个方法。(不执行下面的语句)
	方法里传入参数的需要返回参数!

解释:参数实质也是一个变量,这个变量的赋值是在调用方法是完成的。

 如果方法有结果,一定要返回一个指定返回类型的结果值。

形参和实参  

	方法定义中的参数叫形参,调用方法传入的值叫实参

	double run(){
		System.out.println("这个人在跑步");
		return 0.7;	//当执行了return语句,方法立刻结束。
	}

	double run(boolean isChild){
		System.out.println("这个人在跑步");
		if(isChild){
			return 0.7;	
		}else{
			return 0.8;	
		}	
	}

方法重载:

方法名相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。

方法的递归调用:

方法自己调用自己

构造器\构造方法\构造函数 (Constructor)

语法:

[修饰范围] 类名([参数,参数]){

	语句;

}

	Person(){
		System.out.println("创建了一个Person对象");
	}

作用:用来创建对象,其次还可以在创建对象的同时,做一些初始化工作(过程化的初始化、属性的初始化)。

特点:如果类中没写构造器,在编译时,系统会为这个类分配一个无参构造器。

    如果类中写了构造器,系统就不在分配构造器了。

    一个类中可以有多个构造器,但构造器的参数类型列表必须不同。

	Person(String name,int age,double height){
		//当全局变量和局部变量的名字相同,默认使用局部变量
		this.name = name;
		this.age = age;
		this.height = height;
	}
	Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	Person(String name){
		this.name = name;
	}

创建对象

Person p = new Person();

使用对象的属性

Person p = new Person();
p.name = "tom";
System.out.println(p.name);

调用方法

System.out.print(p2.run(false));

方法及属性重名问题

一个类中属性名不能重复(类中的属性名是属性的唯一标示)

一个类中方法名是可以重复的,但要保证方法的参数类型列表不同

调用构造器

new关键字+构造器()

this关键字

当前对象

如果在一个方法中使用this,代表当前调用方法的那个对象

如果在一个构造器中使用this,代表当前创建出来的那个对象

堆栈:

堆:存放对象的属性,需要使用关键字new才可以开辟。

栈:存放堆内存的地址(对象的名字)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值