面向对象 (九)

发布于:2023-01-22 ⋅ 阅读:(476) ⋅ 点赞:(0)

活动地址:CSDN21天学习挑战赛

目录

main()方法

代码块

关键字:final


main()方法


main()方法的使用

1、main()方法作为程序的入口

2、main()方法也是一个普通的静态方法

3、main()方法也可以作为我们与控制台交互的方式  (之前使用Scanner)

**

代码块


1,概述

1、代码块的作用:通常初始化类、对象

2、代码块只能通过static修饰

3、分类:静态代码块、非静态代码块

2,静态代码块

1、内部可以有输出语句

2、随着类的加载而执行,而且只执行一次

3、作用:初始化类的信息

4、如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行

5、静态代码块的执行优先于非静态代码块

6、静态代码块只能调用静态的属性、静态方法,不能调用非静态的结构

3,非静态代码块

1、内部可以有输出语句

2、随着对象的创建而执行

3、每创建一个对象就执行一次非静态代码块

4、作用:可以在创建对象时,对对象的属性等进行初始化

5、如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行

6、非静态结构可以调用静态属性、静态的方法、非静态的属性、非静态的方法

4,举例

先创建一个Person类

class Person{
	//属性
	String name;
	int age;
	static String desc = "我是一个人";
	
	//构造器
	public Person() {
		
	}
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	//非静态代码块
	{
		System.out.println("hello,Block-1");
		age = 1;
	}
	{
		System.out.println("hello,Block-2");
		//调用非静态结构
		age = 1;
		eat();
		//调用静态结构
		desc = "我是一个普通人";
		info();
	}

	//静态代码块
	static {
		System.out.println("hello,static Block-1");
		desc = "我是一个安静的人";
	}
	static {
		System.out.println("hello,static Block-2");
		//调用静态结构
		desc = "我是一个沉默的人";
		info();
        //静态代码块无法调用非静态结构
//		eat();
//		name = "Tom";
	}
	
	//非静态方法
	public void eat() {
		System.out.println("吃饭");
	}
    //静态方法
	public static void info() {
		System.out.println("静态方法");
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

测试类

public class Test {
	public static void main(String[] args) {
		
		String desc = Person.desc;
		System.out.println(desc);
		
		Person p1 = new Person();
		Person p2 = new Person();
		System.out.println(p1.age);
		
		Person.info();
	}
}

输出结果

//静态代码块先输出
hello,static block-1
hello,static block-2
静态方法

//静态属性desc输出
我是一个沉默的人

//非静态代码块后输出
hello,block-1
hello,block-2
吃饭
静态方法
//因为创建了两个对象,所以非静态代码块会输出两次
hello,block-1
hello,block-2
吃饭
静态方法

//输出p1的属性、方法和Person类的静态方法
1
吃饭
静态方法

**

关键字:final


final:最终的

1、final可以用来修饰的结构:类、方法、变量

2、final 修饰一个类,此类将无法被其他类继承

        例:String类、System类、StringBuffer类

3、final 修饰方法,此方法不可以被重写

        例:Object类中getClass();

4、final 修饰变量,此时的"变量"就称为是一个常量

         修饰属性,可以考虑赋值的位置有:显式初始化、代码块中初始化、构造器中初始化

         修饰局部变量:尤其final修饰形参时,此时形参是一个常量。当我们调用此方法时,给常量形参赋一个实参。 一旦赋值以后,就只能在方法体内使用此形参,不能进行重新赋值。

static final 用来修饰属性:全局常量

提醒:在发布作品前请把不用的内容删掉(活动地址请保留)


网站公告

今日签到

点亮在社区的每一天
去签到