精华内容
下载资源
问答
  • 定义人类Person该类中应该有两私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。 代码如下: /* * ...

    编写Java程序用于显示人的姓名和年龄。 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。

    代码如下:

    /*
     * 编写Java程序用于显示人的姓名和年龄。
     * 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。
     * 定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。
     * 在main方法中创建人类的实例然后将信息显示。
     */
    
    public class Person {
    	public static void main(String[] args) {
    		Person person = new Person("abc", 12);
    		System.out.println(person.display());
    	}
    
    	private String name;
    	private int age;
    
    	public Person() {
    		super();
    	}
    
    	public Person(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public String display() {
    		return "Person [name=" + name + ", age=" + age + "]";
    	}
    
    }
    
    展开全文
  • package com.sxt;public class Prson { String name; int age; public Prson(String name,int age){ this.name=name; this.age=age; }s public static void main(String

    package com.sxt;

    public class Prson {
    String name;
    int age;
    public Prson(String name,int age){
    this.name=name;
    this.age=age;
    }s
    public static void main(String[] args) {
    Prson Xiaohong=new Prson(“小红”,18);
    System.out.println(Xiaohong.name+”\n”+Xiaohong.age);

    }
    

    }

    展开全文
  • (1)定义Person类,其中包括:1.定义属性:姓名;年龄;民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义方法:分别显示相应的属性值,例如getName(){System.out....

    题目显示不全,完整题目描述:

    (1)定义一个Person类,其中包括:1.定义属性:姓名;年龄;民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1。5.定义一个静态方法“显示人数”:显示当前的人数。 (2)定义一个民族接口其中包括抽象方法:1.“习俗”:显示民族习俗。2.“政策”:民族优待政策。3.编译生成.class文件。 (3)定义一个“学生”类继承Person类,实现(2)中定义的民族接口。1.增加属性:“学历”,定义为字符串类型,表示本科生还是研究生。2.定义两个构造方法:构造方法重载;3.覆盖父类中的方法“成长”:实现根据年龄显示是研究生还是本科生,年龄小于23是本科生,否则是研究生。其中还要调用父类的“成长”方法,实现年龄的增加。4.实现接口中的两个抽象方法“习俗”和“政策”。“习俗”实现功能为:显示“春节,端午,中秋”等。 “政策”实现功能为:根据“民族”的值如果是汉族,显示“无”,否则显示“有优惠政策”。5.定义一个main方法。实例化一个父类对象,调用各种方法显示相关信息,然后,实例化一个学生类对象,分别调用相关方法,包括继承来的各种方法,进行覆盖后的方法等,实现多态效果,显示各种信息。

    完整代码如下:

    package naizi;
    
    class Person {
    
    protected String Name;
    protected int Age;
    protected String Nationality;
    public static int count=0;
    
    Person(String Name,int Age,String Nationality){
        this.Name = Name;
        this.Age = Age;
        this.Nationality = Nationality;
        count++;
    }
    
    //显示属性值
    public void getName() {
        System.out.println("Name="+Name+";");
    }
    public void getAge() {
        System.out.println("Age="+Age+";");
    }
    public void getNationality() {
        System.out.println("Nationality="+Nationality+";");
    }
    
    //成长方法
    public void growUp(){
        Age++;
    }
    
    //显示人数方法
    public void show(){
        System.out.println("Person count:"+count+";");
    }
    }
    
    
    //定义Nationality接口 
    interface Nationality{
        public void custom();
        public void policy();
    }
    
    
    //定义一个Student类继承Person类,实现Nationality接口
    public class Student extends Person implements Nationality{
    
        //子类的新成员变量
        protected String Education;
    
        //子类的构造方法调用父类的构造方法
        Student(String Name,int Age,String Nationality,String Education){
            super(Name, Age, Nationality);
            this.Name = Name;
            this.Age = Age;
            this.Nationality = Nationality;
            this.Education = Education;
        }
    
        //构造方法的重载,并且默认如果一个学生没有传入民族,默认为汉族
        Student(String Name,String Education){
            this(Name, 0, "han", Education);
            this.Name = Name;
            this.Education = Education;
        }
    
        //覆盖父类的成长方法
        public void growUp(){
            if("Undergraduate".equals(Education)){
                System.out.println("Undergraduate;");
            }else {
                System.out.println("Postgraduate;");
            }
            Age++;
            super.growUp();
        }
        public void custom(){
            System.out.println("Spring Festival, Dragon Boat Festival, Mid-Autumn Festival");
        }
        public void policy(){
            if("han".equals(Nationality)){
                System.out.println("No preferential policies;");
            }else {
                System.out.println("Have preferential policies;");
            }
        }
    
        //请参考main函数的内容编写以上内容 
        public static void main(String args[]){ 
            Person a=new Person("zhangsan",19,"han"); 
            a.getName(); 
            a.getAge(); 
            a.getNationality(); 
            a.growUp(); 
            a.getAge(); 
            a.show(); 
    
            Person b=new Person("lisi",39,"man"); 
            b.getName(); 
            b.getAge(); 
            b.getNationality(); 
            b.growUp(); 
            b.getAge(); 
            b.show(); 
    
            Student c=new Student("wanger",33,"man","Postgraduate"); 
            c.growUp(); 
            c.custom(); 
            c.policy(); 
            c.show(); 
    
            Student d=new Student("wanger","Undergraduate"); 
            d.growUp(); 
            d.custom(); 
            d.policy(); 
            d.show(); 
            } 
        }

    测试如图:

    Wf5EfeU.png

    转载于:https://www.cnblogs.com/zqm-sau/p/9763530.html

    展开全文
  • 定义有无参数宏定义和带参数宏定义两种。  无参数的宏定义的一般形式为  # define 标识符 字符序列 其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔。这种宏定义要求...
    宏定义有无参数宏定义带参数宏定义两种。
       无参数的宏定义的一般形式为
                # define 标识符 字符序列

    其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔。这种宏定义要求编译预处理程序将源程序中随后所有的定名的出现(注释与字符串常量中的除外)均用字符序列替换之。前面经常使用的定义符号常量是宏定义的最简单应用。如有:
                # define TRUE 1
                # define FALSE 0
    则在定义它们的源程序文件中,凡定义之后出现的单词TRUE将用1替代之;出现单词FALSE将用0替代之。
           在宏定义的#之前可以有若干个空格、制表符,但不允许有其它字符。宏定义在源程序中单独另起一行,换行符是宏定义的结束标志。如果一个宏定义太长,一行不 够时,可采用续行的方法。续行是在键人回车符之前先键入符号"/"。注意回车要紧接在符号"/"之后,中间不能插入其它符号。
          宏定义的有效范围称为宏定义名的辖域,辖域从宏定义的定义结束处开始到其所在的源程序文件末尾。宏定义名的辖域不受分程序结构的影响。可以用预处理命令#undef终止宏定义名的辖域。
      在新的宏定义中,可以使用前面已定义的宏名。例如,
                 # define R 2.5
                 # define PI 3.1415926
                 # define Circle 2*PI*R
                 # define Area PI* R * R
    程序中的Circle被展开为2*3.1415926* 2.5, Area被展开为3.1415926*2.5*2.5。
         如有必要,宏名可被重复定义。被重复定义后,宏名原先的意义被新意义所代替。

         通常,无参数的宏定义多用于定义常量。程序中统一用宏名表示常量值,便于程序前后统一,不易出错,也便于修改,能提高程序的可读性和可移植性。特别是给数组元素个数一个宏定义,并用宏名定义数组元素个数能部分弥补数组元素个数固定的不足。
          注意:预处理程序在处理宏定义时,只作字符序列的替换工作,不作任何语法的检查。如果宏定义不当,错误要到预处理之后的编译阶段才能发现。宏定义以换行结束,不需要分号等符号作分隔符。如有以下定定义:
       # define PI 3.1415926;
    原希望用PI求圆的周长的语句
       c=2*PI*r;
    经宏展开后,变成
       c=2*3.1415926*r;
    这就不能达到希望的要求。
       带参数宏定义进一步扩充了无参数宏定义的能力,在字符序列替换同时还能进行参数替换。带参数定定义的一般形式为
       # define 标识符(参数表)字符序列
    其中参数表中的参数之间用逗号分隔,字符序列中应包含参数表中的参数。
    在定义带参数的宏时,宏名标识符与左圆括号之间不允许有空白符,应紧接在一起,否则变成了无参数的宏定义。如有宏定义:
       # define MAX(A,B) ((A) > (B)?(A):(B))

    则代码 y= MAX( p+q, u+v)将被替换成 y=((p+q) >(u+v)?(p+q):(u+v)。
               程序中的宏调用是这样被替换展开的,分别用宏调用中的实在参数字符序列(如p+q和u+V) 替换宏定义字符序列中对应所有出现的形式参数(如用p+q替代所有形式参数A,用u+V替代所有形式参数B),而宏定义字符序列中的不是形式参数的其它字 符则保留。这样形成的字符序列,即为宏调用的展开替换结果。宏调用提供的实在参数个数必须与宏定义中的形式参数个数相同。
           注意:宏调用与函数调用的区别。函数调用在程序运行时实行,而宏展开是在编译的预处理阶段进行;函数调用占用程序运行时间,宏调用只占编译时间;函数调用 对实参有类型要求,而宏调用实在参数与宏定义形式参数之间没有类型的概念,只有字符序列的对应关系。函数调用可返回一个值,宏调用获得希望的C代码。另 外,函数调用时,实参表达式分别独立求值在前,执行函数体在后。宏调用是实在参数字符序列替换形式参数。替换后,实在参数字符序列就与相邻的字符自然连 接,实在参数的独立性就不一定依旧存在。如下面的宏定义:
       # define SQR(x) x*x
    希望实现表达式的平方计算。对于宏调用
       P=SQR(y)
    能得到希望的宏展开p= y*y。但对于宏调用q=SQR(u+v)得到的宏展开是q=u+V*u+V。显然,后者的展开结果不是程序设计者所希望的。为能保持实在参数替换后的独立性,应在宏定义中给形式参数加上括号。进一步,为了保证宏调用的独立性,作为算式的宏定义也应加括
    号。如 SQR宏定义改写成:
       # define SQR((x)*(x))
    才是正确的宏定义。

          对于简短的表达式计算函数,或为了提高程序的执行效率、避免函数调用时的分配存储单元、保留现场、参数值传递、释放存储单元等工作。可将函数定义改写成宏定义。所以合理使用宏定义,可以使程序更简洁。


    使用一些宏跟踪调试

    A N S I标准说明了五个预定义的宏名。它们是:

    _ L I N E _ (两个下划线),对应%d

    _ F I L E _    对应%s

    _ D A T E _   对应%s

    _ T I M E _   对应%s

    _ S T D C _

    如果编译不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序

    也许还提供其它预定义的宏名。

    _ L I N E _及_ F I L E _宏指令在有关# l i n e的部分中已讨论,这里讨论其余的宏名。

    _ D AT E _宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。

    源代码翻译到目标代码的时间作为串包含在_ T I M E _中。串形式为时:分:秒。

    如果实现是标准的,则宏_ S T D C _含有十进制常量1。如果它含有任何其它数,则实现是

    非标准的。

    可以定义宏,例如:

    当定义了_DEBUG,输出数据信息和所在文件所在行

    #ifdef _DEBUG

    #define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%s”,date,_LINE_,_FILE_)

    #else

          #define DEBUGMSG(msg,date)

    #endif

    20,宏定义防止使用是错误

    用小括号包含。

    例如:#define ADD(a,b) (a+b)

    用do{}while(0)语句包含多语句防止错误

    例如:#difne DO(a,b) a+b;/

                       a++;

    应用时:if(….)

              DO(a,b); //产生错误

            else

            

    解决方法: #difne DO(a,b) do{a+b;/

                       a++;}while(0)


    宏中"#"和"##"的用法 
    一、一般用法 
    我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起(这里说的是在预处理是对源文件的操作)
    用法: 
    #include<cstdio> 
    #include<climits> 
    using namespace std;

    #define STR(s)     #s 
    #define CONS(a,b) int(a##e##b)

    int main() 

    printf(STR(vck));           // 输出字符串"vck" 
    printf("%d/n", CONS(2,3)); // 2e3 输出:2000 
    return 0; 
    }

    二、当宏参数是另一个宏的时候 
    需要注意的是凡宏定义里有用''#''或''##''的地方宏参数是不会再展开.

    1, 非''#''和''##''的情况 
    #define TOW      (2) 
    #define MUL(a,b) (a*b)

    printf("%d*%d=%d/n", TOW, TOW, MUL(TOW,TOW)); 
    这行的宏会被展开为: 
    printf("%d*%d=%d/n", (2), (2), ((2)*(2))); 
    MUL里的参数TOW会被展开为(2).

    2, 当有''#''或''##''的时候 
    #define A          (2) 
    #define STR(s)     #s 
    #define CONS(a,b) int(a##e##b)

    printf("int max: %s/n", STR(INT_MAX));    // INT_MAX #include<climits> 
    这行会被展开为: 
    printf("int max: %s/n", "INT_MAX");

    printf("%s/n", CONS(A, A));               // compile error 
    这一行则是: 
    printf("%s/n", int(AeA));

    INT_MAX和A都不会再被展开, 然而解决这个问题的方法很简单. 加多一层中间转换宏. 
    加这层宏的用意是把所有宏的参数在中间层里全部展开, 那么在转换宏里的那一个宏(_STR)就能得到正确的宏参数.

    #define A           (2) 
    #define _STR(s)     #s 
    #define STR(s)      _STR(s)          // 转换宏 
    #define _CONS(a,b) int(a##e##b) 
    #define CONS(a,b)   _CONS(a,b)       // 转换宏

    printf("int max: %s/n", STR(INT_MAX));          // INT_MAX,int型的最大值,为一个变量 #include<climits> 
    输出为: int max: 0x7fffffff 
    STR(INT_MAX) --> _STR(0x7fffffff) 然后再转换成字符串;

    printf("%d/n", CONS(A, A)); 
    输出为:200 
    CONS(A, A) --> _CONS((2), (2)) --> int((2)e(2))

    三、''#''和''##''的一些应用特例 
    1、合并匿名变量名 
    #define ___ANONYMOUS1(type, var, line) type var##line 
    #define __ANONYMOUS0(type, line) ___ANONYMOUS1(type, _anonymous, line) 
    #define ANONYMOUS(type) __ANONYMOUS0(type, __LINE__) 
    例:ANONYMOUS(static int); 即: static int _anonymous70; 70表示该行行号; 
    第一层:ANONYMOUS(static int); --> __ANONYMOUS0(static int, __LINE__); 
    第二层:                        --> ___ANONYMOUS1(static int, _anonymous, 70); 
    第三层:                        --> static int _anonymous70; 
    即每次只能解开当前层的宏,所以__LINE__在第二层才能被解开;

    2、填充结构 
    #define FILL(a)   {a, #a}

    enum IDD{OPEN, CLOSE}; 
    typedef struct MSG{ 
    IDD id; 
    const char * msg; 
    }MSG;

    MSG _msg[] = {FILL(OPEN), FILL(CLOSE)}; 
    相当于: 
    MSG _msg[] = {{OPEN, "OPEN"}, 
    {CLOSE, "CLOSE"}};

    3、记录文件名 
    #define _GET_FILE_NAME(f)   #f 
    #define GET_FILE_NAME(f)    _GET_FILE_NAME(f) 
    static char FILE_NAME[] = GET_FILE_NAME(__FILE__);

    4、得到一个数值类型所对应的字符串缓冲大小 
    #define _TYPE_BUF_SIZE(type) sizeof #type 
    #define TYPE_BUF_SIZE(type)   _TYPE_BUF_SIZE(type) 
    char buf[TYPE_BUF_SIZE(INT_MAX)]; 
    --> char buf[_TYPE_BUF_SIZE(0x7fffffff)]; 
    --> char buf[sizeof "0x7fffffff"]; 
    这里相当于: 

    char buf[11]

    本文转载自http://hi.baidu.com/ufo008ahw/blog/item/5e943d4f5f49513caec3abd1.html)

    展开全文
  • C语言定义动态数组

    万次阅读 2019-03-31 15:23:45
    今天在unbutu写一道简单的约瑟夫环的问题:有n个人,循环报数,报到3的淘汰,求最后剩下的,我就想定义动态数组来记录他们是否淘汰`,如果淘汰了就把他对应数组中的值改为0,淘汰n-1个人之后,数组中值为1...
  • C++类(Class)的定义与实现

    万次阅读 多人点赞 2018-08-01 17:41:17
    一、"类" 的介绍 ..., 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两轮子, 都是属于交通工具等。"都有质量"、"两轮子"属于这对象的属性,
  • 人工智能的定义详解

    万次阅读 2018-09-25 09:13:04
    人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者自身的智能程度有没有高到可以创造人工智能的地步,等等。但总的来说,...
  • const定义的对象属性是否可以改变

    万次阅读 多人点赞 2018-03-02 18:29:15
    在作业盒子面试的时候问到了一问题,const定义的对象属性是否可以改变。当时没有考虑就回答了可以,面试官微笑着回答说错了。回来后查看了一下const的定义,明白了其中的原理。 const是用来定义常量的,而且...
  • c++中定义和声明的区别

    万次阅读 多人点赞 2018-04-04 08:38:58
    就好比跟你介绍一个人的时候,声明就是只告诉你这个人叫什么,但是缺给你说这个人到底怎么样,他有哪些优点,缺点,喜好问题是什么的。b.定义一样了,定义直接告诉你了所有的东西,这变量是什么,这函数是...
  • C/C++头文件与变量的声明和定义

    万次阅读 2016-06-27 11:20:55
    C/C++头文件与变量的声明和定义最近遇到了变量重复包含的问题,才发现自己有好多知识已经模糊了,真惭愧。首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一下,没别的...
  •  在C++和JAVA中,按照语法,我们可以把变量定义在任何位置,所以很多习惯了“哪里使用哪里定义”的这种做法,所以当用C语言进行编程的时候,很多依然想这样去。当然,对于变量定义的位置,C89和C99是有一定的...
  • java中interface中定义变量都是"public static final" 类型的, 也就是常量, 因此很多在interface定义常用的常量(这也是本人偏爱的方式);  由此却引起了不少风波, 网上关于此问题的讨论也非常多, 下面说说我的...
  • 内联函数的声明和定义

    万次阅读 2012-07-26 15:00:16
    一、什么叫inline函数? inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一内联函数时,它不是...这样好处:由于每当代码调用到内联函数,就需要在调用处直接插入
  • VB6.0中数组的定义实测

    万次阅读 2014-07-25 10:31:18
    我觉得,编程语言、数据库等东西,一定要用最新的,适合、够用就好,比如Win8都出来几年了,我们很多还在用XP,日常办公,够用了。 2、数组定义中发现的问题 定义数组   Dim a(n) as type  A 是一 ...
  • oracle未明确定义

    万次阅读 2013-02-05 15:55:23
    1332阅读 评论(0) 收藏 举报 运行环境:Oracle10g sqlplus环境下。  在查询语句中,经常会出现一错误:  SQL基础:ORA-00918:未明确定义列的错误。  当前遇到有两种情况...
  • 当你写的函数方法,要其他调用时, 你想让他知道传入参数的数据类型, 可以这样定义 def demo(name: str, age: 'int > 0'=20)->str: # ->str 表示该函数的返回值是str类型的 print(name, type(name)) ...
  • C语言中的布尔型变量

    万次阅读 2015-11-06 21:44:18
     使用C++或JAVA等编程语言较多的,可能随手就习惯定义flag,其数据类型为布尔型,然后用true和false来表示真与假的问题。这是非常常用的。但是,在C语言中是存在布尔型这种数据类型的,所以大家不要直接...
  • 我最近在调整论文格式时就所谓的“文档网格”给搞惨啦! 出现的问题是:我完全按照论文的模板地使用了相同的段落设置,也就是段前段后间距还有行距,完完全全与论文模板一致。但是,怎么看感觉都跟模板的格式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,084,118
精华内容 833,647
关键字:

做个不被定义的人