7.对java中main方法的解释 / 代码块 / final关键字 / 抽象类与抽象方法 / 匿名子类 / 模板方法设计模式

对java中main方法的解释
public static void main(String[] args){
}

由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是
public, 又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。
又因为main() 方法是静态的,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员.

main方法实际上可以与控制台进行交互
在idea中的设置方式:
在这里插入图片描述
在这里插入图片描述

public class SIngletonTest {
    public static void main(String[] args) {
        for(int i =0;i<args.length;i++)
        {
            System.out.println("===="+args[i]);
        }
    }
}
代码块

作用:对Java类或对象进行初始化
一个类中代码块若有修饰符, 则只能被static修饰, 称为静态代码块(static block), 没有使用static修饰的, 为非静态代码块。
静态代码块

  1. 可以有输出语句。
  2. 可以对类的属性、类的声明进行初始化操作。
  3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
  4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
  5. 静态代码块的执行要先于非静态代码块。
  6. 静态代码块随着类的加载而运行 ,且只执行一次。

非静态代码块

  1. 可以有输出语句。
  2. 可以对类的属性、 类的声明进行初始化操作。
  3. 除了调用非静态的结构外, 还可以调用静态的变量或方法。
  4. 若有多个非静态的代码块, 那么按照从上到下的顺序依次执行。
  5. 每次创建对象的时候, 都会执行一次。 且先于构造器执行。
class Person {
public static int total;
static {
	total = 100;
	System.out.println("in static block!");
}
}
final关键字

final可以用来修饰类,方法,变量

final可以用来修饰一个类,此类无法被其他类所继承。比如String类,System类、StringBuffer类
final用来修饰一个方法:表明此方法无法被重写。
final用来修饰变量:此时的变量就是一个常量,无法被重写赋值
final修饰属性可以考虑赋值的位置有:显式初始化、代码块中的初始化、构造器中进行初始化。
final修饰局部变量时,尤其是使用final修饰形参时,此时表明形参是一个常量,当调用方法时,给常量形参赋一个实参。一旦赋值之后,就只能在方法体内使用此形参,但是并不能重新赋值。

抽象类与抽象方法

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。(C++中在类中对方法用virtual修饰并且加 =0 表示纯虚函数,带有纯虚函数的类是抽象类)
抽象类实际上是设计了一个模板或标准。

abstract关键字可以用来修饰类、方法

被abstract修饰的类是抽象类,无法被实例化为对象。抽象类中一定有构造器,便于子类进行实例化调用。
被abstract修饰的方法是抽象方法,public abstract void eat();如上所示即为设置一个抽象方法,没有方法体。包含抽象方法的类一定是一个抽象类。反之,抽象类中不一定有抽象方法。
父类中有抽象方法时,子类继承父类时,需要在子类中对该抽象方法进行重写。
注意:
不能用abstract修饰变量、代码块、构造器;
不能用abstract修饰私有方法、静态方法、 final的方法、 final的类。
在这里插入图片描述

抽象类的匿名子类对象的写法
Person p1 = new Person(){};
//Person 是一个抽象类
//如果Person抽象类中有抽象方法,那么此时在{}中还需要Override这些方法

创建匿名子类的目的是因为,开发中有些抽象类的子类可能仅使用一次,为了防止再造一个类(偷懒),直接使用匿名对象即可。

模板方法设计模式

比较好用的一个设计模式,把一些固定流程步骤的方法在抽象类中进行实现,把不固定的部分易变的部分抽象出来。
在这里插入图片描述
在这里插入图片描述

该博客图片来源于尚硅谷宋老师教学课件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值