类与对象(二)面向对象与面向过程、方法与重载、代码块

面向对象与面向过程

面向对象是一种程序设计方法,它以对象作为基本的单元来构建系统,它利用对象将系统的复杂性隐藏在对象里(也就是常说的封装),从而构建大型的工业级系统和大型系统(注意是工业及系统和大型软件系统而不是播放器等小型的系统)。

简单的说就是面向对象让对象成为类与类之间的“通信”的桥梁,通过对象使类之间形成有机的整体。

面向对象编程语言以对象为中心,以消息为驱动,即程序=对象+消息。消息指方法的调用:Java使用向方法传递参数的方式实现向方法发送信息;并通过返回值从方法中获取信息。

面向过程编程语言则以过程为中心,以算法为驱动,即程序=算法+数据;

面向对象是从宏观方面思考问题,而面向过程可以说是从细节处思考问题。

在面向对象中也存在面向过程。

方法与重载

方法的定义格式:

访问控制符 [修饰符] 返回值类型 方法名( [参数] )  {

           //方法体

}

例如:

public void sayHello(){
	System.out.println("Hello");
}

protected final void show(int x){
	System.out.println(x);
}
	
private static int add(int x, int y){
	return x+y;
}

访问控制符

方法中的访问控制符用来限制方法在其他类中的使用范围。

访问控制符分为四种:public、protected、private和一个默认的修饰符。

修饰符

static修饰符用来限制方法的调用方式:有static修饰的方法可以直接类名调用,也可以创建对象调用。static修饰的类在JVM运行时就加载到内存中了,所以不需要实例类。无static修饰的方法只能使用类创建对象来调用。

下面是一个调用例子:

public class Student{
    public static void run(){
        System.out.println("跑");
    }
}
public class Text{
    public static void main(String [] args){
        Student.run();//第一种方式,类名调用
        Student student = new Student();//第二种方式,创建对象调用
    }
}

其他修饰符有final和synchronized。

方法的定义

如果方法没有返回值,需要用void表示。

void sayHello(){
	System.out.println("Hello");
}

方法返回基本数据类型的数据,则返回值类型必须是返回数据所属的数据类型或者精度更高的数据类型(针对于数值类型的数据)。

boolean compare(int x, int y){
	return x>y;
}
	
int add(int x, int y){
	return x+y;
}

double subtraction(int x, int y){
	return x-y;
}

方法返回引用数据类型的数据,则返回值类型必须是返回数据所属的数据类型或者其父类。

public class Student{
    public object name(String name){
        System.out.println(name);
    }
}

方法如果有返回值,则必须用return关键字返回;

 

方法可以有多个参数,各个参数之间用逗号(,)间隔。方法的参数在整个方法内有效。方法参数前面的数据类型用于限制调用方法时所传具体数据的数据类型;

int multiplication(int x, int y){
		int result = x*y;
	return result;
}

动态参数:

public class Test {

	public static void print(int... numbers) {
		for (int number : numbers) {
			System.out.println(number);
		}
	}

	public static void main(String[] args) {
		print(1, 2, 3, 4, 5);
	}
}
注意:
      1、动态参数实质为数组;
      2、动态参数必须位于参数列表的最后;
      3、一个方法只能有一个动态参数。

方法的重载

同一个类中有多个方法名相同但方法参数不同(1、方法参数类型不同。2、方法参数的个数不同)的方法,这种现象叫做方法的重载。

注意:方法中其它构成部分不参与比较:访问控制符、修饰符、返回值类型。

比如:

public class Teacher {

	public static void print(int age, String name) {
		System.out.println(age + "," + name);
	}

	public static void print(String name, int age) {
		System.out.println(name + "," + age);
	}

	public static void main(String[] args) {
		print(33, “王小红”);// 依次传入int类型和String类型数据,所以调用第一个方法
		print("王小红", 33);//依次传入String类型和int类型数据,所以调用第二个方法
	}
}

代码块

Java中代码块分为静态代码块和非静态代码块

静态代码块只在类加载时执行一次

public class Test {

	static{
		System.out.println("静态代码块");
	}

	public static void main(String[] args) {
		
	}
}

非静态代码块每次创建对象时都会执行;

public class Test {

	{
		System.out.println("非静态代码块");
	}

	public static void main(String[] args) {
		new Test();
		new Test();
	}
}

下面是一道练习题:

public class Test {

	{
		System.out.println("非静态代码块");
	}
	
	static{
		System.out.println("静态代码块");
	}

	public static void main(String[] args) {
		new Test();
		new Test();
	}
}

结果为:

静态代码块
非静态代码块
非静态代码块


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值