Java_面向对象_上

一、类

类常见的成员:

属性和行为(方法 或函数)

1.成员变量(属性)和局部变量

(1)成员变量

  • 定义格式:数据类型 变量名 = 变量值
  • 直接定义在类的一对**{}**内;
  • 可以在声明属性时指明其权限,使用权限修饰符。常用权限修饰符:private、public、缺省、protected等;
  • 内存加载到空间中(非static);

(2)局部变量

  • 定义格式:数据类型 变量名 = 变量值
  • 声明在方法内方法形参代码块内构造器形参构造器内部的变量
  • 可以使用权限修饰符
  • 没有默认初始化值,故调用局部变量之前一定要显式赋值
  • 内存加载到空间中;

2.构造器

(1)特征

  • 具有与类相同的名称;
  • 不声明返回值类型;
  • 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值;

(2)作用

  • 创建对象;
  • 给对象进行初始化;
Person p new person();//创建对象
person pe new person("sd",3);//给对象初始化

(3)构造器的创建

//测试类
public class SuccessionTwo {
	public static void main(String[] args) {
        //通过构造器初始化对象属性
		SuccessionOne s = new SuccessionOne(19,"sdf");
}

//封装类
public class SuccessionOne {
	//1.封装属性
    private int age;
	private String name;
    //2.声明构造器
	public SuccessionOne() {//构造器(一般都会创建一个无形参的构造器)
		age = 18;
	}
	public SuccessionOne(int a,String b) {//构造器
		age = a;
		name = b;
	}
	//3.方法
	void setAge(int i) {
		if(i >= 0 && i <= 130) {
			age = i;
			return;
		}
		System.out.println("输入有误!");
	}
}

(4)说明

  • 如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器(创建对象);
  • 定义构造器格式权限修饰符 类名(形参列表){}
  • 一个类中定义的多个构造器,彼此构成重载
  • 一旦我们显示的的定义了类的构造器之后,系统就不再提供默认的空参构造器;
  • 一个类中,至少会有一个构造器;

3.代码块

(1)代码块的作用

用来初始化类、对象;

(2)代码块只能用static修饰

//静态代码块
static {
    代码;
}

//非静态代码块
{
    代码;
}

静态代码块

  • 内部可以有输出语句;
  • 随着类的加载而加载,而且只执行一次
  • 作用:初始化类的信息;
  • 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
  • 静态代码块的执行要优先非静态代码块的执行;
  • 静态代码块只能调用静态的属性、静态的方法不能调用非静态的结构

非静态代码块

  • 内部可以有输出语句;
  • 随着对象的创建而执行
  • 创建一个对象,就执行一次非静态代码块;
  • 作用:可以在创建对象时,对对象的属性等进行初始化
  • 如果一个类中定义了多个非静态代码块, 则按照申声明的先后顺序执行
  • 非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法

4.方法

(1)方法的声明

权限修饰符 返回值类型 方法名(形参列表){
    方法体;
}

(1)权限修饰符

(2)返回值类型

有返回值类型必须在方法声明时指定返回值类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量。

没用返回值类型:方法声明时,使用void表示。通常,没有返回值的方法中,就不使用return,但是,如果使用的话只能”return;表示结束此方法的意思。

(3)形参列表

方法可以声明0个、1个或多个形参。

格式:数据类型1 形参1,数据类型2 形参2,…

(4)return关键字

使用范围:使用在方法体中;

作用:1.结束方法 2.针对于有返回值类型的方法,使用”return 数据“方法返回所要的数据;

注意:return后面不可以声明执行语句;

(2)方法的重载

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可;(与权限修饰符和返回值类型无关)

public class OverLoad {
	public static void main(String[] args) {
		OverLoad test = new OverLoad();
		int sum = test.mol(8);
		int mult = test.mol(1, 2);
		String chars = "sfljd";
		test.mol(chars);
		System.out.println(sum + mult);
	}
	//方法的重载
	public int mol(int i) {
		return i*i;
	}
	public int mol(int a,int b) {
		return a*b;
	}
	public void mol(String c) {
		System.out.println(c);
	}
	
}

(3)可变个数的形参

javaSE 5.0支持;

允许直接定义能和多个实参相匹配的形参。

具体使用

  • 可变个数形参格式: 数据类型 … 变量名
  • 当调用可变个数形参的方法时,传入的形参个数可以是:0个,1个,2个…
  • 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
  • 可变个数形参的方法与本类中方法名相同,形参类型也相同数组之间不构成重载
  • 可变个数形参在方法的形参中,必须声明在末尾只能有一个可变个数形参
public void show(int a,int c,String ... strs){
    
}

(4)方法形参的值传递机制

形参时基础数据类型:将实参基本数据类型变量的“数据值”传递给形参

public class ValueTransfer {
	public static void main(String[] args) {
		int m = 20;
		int n = 3;
		ValueTransfer v = new ValueTransfer();
		v.swap(m, n);
		System.out.println(m + "," + n);
	}
	public void swap(int m,int n) {
		int temp = m;
		m = n;
		n = temp;
	}
}
//结果:20,3

形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

public class ValueTransferr {
	public static void main(String[] args) {
		Date date = new Date();
		ValueTransferr v = new ValueTransferr();
		v.swap(date);
		System.out.println(date.m + "," + date.n);
	}
	public void swap(Date date) {
		int temp = date.m;	//date是引用数据类型,
		date.m = date.n;
		date.n = temp;
	}
}
class Date{
	int m = 30;
	int n = 3;
}

二、对象

1.创建对象

类名 对象名 = new 类名();

2.匿名对象

理解:创建对象时,只有创建对象的语句,却没有显示地赋值给一个变量;

特征

  • 调用几次匿名对象就创建了几个对象,造成空间的浪费;
  • 匿名对象可以作为方法的参数和返回值;
new Get().fangFa();
new Get().zhi = 209;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值