继承语法含有main()方法

package me.ybleeho;

class Cleanser{        //清洁剂
    private String s="Cleanser";
    public void append(String a){s+=a;}
    public void dilute(){append("dilute");}        //稀释
    public void apply(){append("apply()");}        //应用
    public void scrub(){append("scrub()");}        //洗擦
    public String toSting(){return s;}
    public static void main(String[] args){
        Cleanser x=new Cleanser();
        x.dilute();x.apply();x.scrub();
        System.out.println(x.toSting());
    }
}

public class Detergent extends Cleanser{    //清洁剂
    public void scrub(){
        append("Detergent.scrub()");
        super.scrub(); //Call base-class version
    }
    //Add methods to the interface:
    public void foam(){append("foam()");}
    //Test the new class:
    public static void main(String[] args){
        Detergent x=new Detergent();
        x.dilute();x.apply();x.scrub();x.foam();
        System.out.println(x.toSting());
        System.out.println("Testing base class:");
        Cleanser.main(args);
    }
}

输出结果:

Cleanserdiluteapply()Detergent.scrub()scrub()foam()
Testing base class:
Cleanserdiluteapply()scrub()

Cleanser和Detergent均含有main()方法。可以为每个类创建一个main()方法。这种在每个类中都设置一个main()方法的技术可使每个类的单元测试都变得简便易行。而且在完成单元测试之后,也无需删除main(),可以将其留待下次测试。

即使是一个程序中含有多个类,也只有命令行所调用的那个类的main()方法会被调用。因此,在此例中,如果命令行是java Detergent,那么Cleanser.main()仍然会被调用。即使一个类中只具有包访问权限,其public main()仍然是可访问的。

在此例中,可以看到Detergent.main()明确调用了Cleanser.main(),并将从命令行获取的参数传递给了它。当然,也可以向其传递任意的String数组。

时间: 2024-10-21 06:48:30

继承语法含有main()方法的相关文章

Ant执行一个含有main方法的class文件

目前需要使用ant来执行一个含有main方法的class文件,并且需要通过命令来行传两个参数(start和end)到main方法. 1 <target name="gsp" depends="compile" description="generator structure pictures"> 2 <echo message="----------- Generator structure pictures ----

JAVA代码重用机制复用类之继承语法(附源码)

前言 继承是所有OOP语言和Java语言不可缺少的组成部分.当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承. 组合的语法比较平实,但是继承使用的是一种特殊语法.在继承过程中,需要先声明"新类与旧类相似".这种声明是通过在类主体的左边花括号之前,书写后面紧随基类名称的关键字extends而实现的.当这么做时,会自动得到基类中所有的域和方法.例如: 示例源码 基类 package com.mufeng.thesev

07 java main方法

1.问题:Java main方法为什么是  public static void main(String[] args)??? 序号 场景 编译 运行 解释 1 public修改为private protected或者去掉 正常 Main Method not public 只有当main方法在公有级别上时才对JVM可见,所以需要使用public修饰 2 去掉static Exception in thread "main" java.lang.NoSuchMethodError:ma

Android 项目中执行java的main方法

Android 项目中执行java的main方法 导语 今日,在android项目中写了一个工具类,为了简单测试一下输出,就只直接在类中加上了main方法,于是问题来了: 解决方法是网上找到了,已经解决了,在此记录一下. 右击项目名,调出Properties窗口,打开Run/Debug Settings 标签,右边即列出了这个项目中含有main方法的所有java类,双击你要允许的java类:

java main方法背后的故事?(转)

jvm java 看似一种语言,实则一个巨大的体系的王国,开发这么多年了,还是没有搞懂,我以为我懂了,可是过了一段时间又忘了,所以说还是没懂 1.main方法说起 编译完我们的java文件后,需要有个一含有main方法的类,java 命令将指示操作系统启动一个jvm进程 这个jvm进程启动后,寻找那个main地方开始执行程序 java [JVM_Options] ClassName_with_main [args_separate_space] main方法的签名必须是 pubic static

【细说Java】揭开Java的main方法神秘的面纱(转)

大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可以继承么?可以重载么?可以被其他方法调用么? 1. main方法为什么这么定义? (1) 因为main方法在启动时是通过Java的虚拟机,也就是JVM来调用的,并且没有通过对象的引用来调用,所以main方法是public和static的.而void是因为,main方法在退出时,没有给退出代码,而是在

Java中static方法、程序入口函数main方法的继承问题

对于继承问题,说明如下: 1.若父类中属性或方法使用private修饰,则不能在子类中访问:对于使用protected.default.public修饰的方法或属性,都是可以在子类中访问的. 2.在1中所述的可被子类访问的前提下,对于static修饰的方法或属性,表示该属性或方法是独立于具体的对象事例:它们也都是可以被子类继承的. 3.对于父类中的入口函数(main方法)也是可以被子类继承的.ps:具体的可以使用命令行运行java程序进行验证.

Java main方法继承

java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Test1.main()"); System.out.println(Thread.currentThread().getStackTrace()[1].get

【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数. 答案很明确,可以继承.其实从Object就是个实体类,Java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的. 关键在于这答案里所说的"前提是实体类必须有明确的构造函数"一句,是什么意思.