JAVA面向对象编程——描述一个人类(有姓名、年龄、生日等属性),并继承出子类 绝地灬酷狼 2022-05-14 15:26 1132阅读 0赞 > **前言**: > 面向对象这个概念在很多语言中都有接触过,尤其在c++中这个概念就是整个语言的核心。那什么是面向对象?也许我们对它都有个似懂非懂的概念,但无法完全清晰的理解。本文先大概描述面向对象的概念,再通过一个例子来和大家一起认识学习java面向对象。 -------------------- ### 一、面向对象概述 ### 面向对象是一种使用封装、继承、多态、抽象等思想进行软件的分析和开发的方法,而java就是一门面向对象编程的语言。 #### 1. 对象和类 #### 要了解对象要先知道类,引用一句书本的概念:类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在。 * **对象**用计算机语言对问题域中事物的描述,对象通过“**属性**(attribute)”和”**方法**(method)”来分别对应事物所具有的静态属性和动态属性。 * 属性用于描述对象静态特性(结构特性)的一个数据项。如描述一个人可用姓名、年龄、身份证号等属性。 * 方法用于描述对象动态特性(行为特性)的一个操作系列。如每个人都具有学习、睡觉等行为特性。 * 类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所因具有的静态和动态属性。类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 总之,把一类事物的静态属性和动态可以执行的操作组合在一起所得到的这个概念就是类 ,类的一个个体就是对象,对象是具体的,实实在在的事物 。 #### 2. 面向对象的三大特征 #### * **封装** 封装就是将实体的属性和行为包装成一个具体的对象,并控制在程序中对其属性的读取、修改。并仅对外公开接口也就是方法,以隐藏对象的属性和实现细节的目的。 * **继承** 继承就是从已有的类和接口中派生出一个新的类和接口,并根据继承规则能从父类和接口中吸收一些属性和行为作为己用,还可以能通过自定义一些自己的属性和方法来扩展新的能力。 * **多态** 所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。 ### 二、java面向对象编程 ### > 概念是较为抽象的,在此举出一个案例更好的理解面向对象思想。 #### 1. 完成一个java application 应用程序,描述一个人类。要求如下: #### * 要求此人类必须包含有人的姓名、性别、出生日期等基本属性(变量)。 * 要求此人类描述吃饭的方法(函数)和描述睡觉的方法(函数)。例如睡觉方法的执行体为一个 System.out.println() 函数,此函数输出一段例如“ xx(姓名)往床上躺倒,不久就睡着了……”之类的描述睡觉的文本。 * 要求此人类的构造函数要具有无参数的构造函数,以及带有姓名、性别、出生日期等参数的构造函数,并在构造函数中输出一段描述xx(姓名)出生的文本。 * 实例化出张三和李四两个人类对象(变量),并为之赋初值。 * 调用张三、李四等人类对象的各种属性(类成员变量)和方法(函数)。 * 在上述人类的基础上派生一个继承自人类的新的职工类,加入职工号等职工特有的属性,加入上班、出差等方法,并实例化一个或几个职工类对象,完成这些职工类对象的各种属性和方法的调用。 #### 2. 实现代码 #### //先写person类,定义属性、方法 //在主函数中输出一个人物信息 //在person类之后继承出一个worker类,定义worker的属性、方法,同时用super函数继承父类属性 //在主函数中输出一个职工信息 class person //自定义"人"类 { //定义成员变量,设置属性的私有访问权限 String name; String sex; int age; String birth; String position; String company; //无参构造函数 public person() { //直接给成员变量赋值 //也可在主函数中按人物1方式调用以下有参构造函数赋值,则此部分省略 name="李四"; sex="女"; age=37; birth="8月17"; position="数据维护工程师"; company="阿里巴巴"; System.out.println("姓名:"+name+"\n" +"性别:"+sex+"\n" +"年龄:"+age+"\n" +"生日:"+birth+"\n"); } //有参构造函数 public person(String name,String sex,int age,String birth,String position,String company) { //将局部变量的值传递给成员变量 this.name=name; this.sex=sex; this.age=age; this.birth=birth; this.position=position; this.company=company; System.out.println("======================="); System.out.println("姓名:"+name+"\n" +"性别:"+sex+"\n" +"年龄:"+age+"\n" +"生日:"+birth); } //定义描述工作的方法(无参) public void work() { System.out.println(name+"就职于"+company+",她的技术方向是"+position +",她每天认真工作。\n"); } //实现方法重载 public void work (int workage) { System.out.println(name+"就职于"+company+",她的技术方向是"+position +",她每天认真工作,已经在"+company+"工作了"+workage+"年。\n"); } //描述睡觉的方法 public void sleep() { System.out.println("她在"+birth+"这天庆祝生日,回家倒头就睡,很快就睡着了。\n"); } } //在上述人类(person)的基础上派生一个继承自人类的新的职工类(woker) class woker extends person { String id; public woker() { } public woker(String name,String sex,int age,String birth,String position,String company,String id) { super(name,sex,age,birth,position,company);//super函数继承父类的构造函数 //super.work(3); //super.sleep(); //super.work(); this.id=id; /*System.out.println("姓名:"+name+"\n" +"性别:"+sex+"\n" +"年龄:"+age+"\n" +"生日:"+birth+"\n" +"职工号:"+id);*/ System.out.println("职工号:"+id+"\n"); } //定义描述出差的方法 public void evection(int days) { System.out.println("第二天"+name+"被"+company+"安排出差"+days+"天。"); } } //创建公共类(注意与class person的区别) public class realperson { public static void main(String[] args) { person person1=new person("张三","女",35,"10月1日","开发工程师","腾讯");//采用带参构造方法创建对象 person1.work();//调用不带参的work方法 person1.work(5);//调用重载的work方法 person1.sleep();//调用sleep方法 System.out.println("======================="); //人物2自动调用无参构造函数(没有对其参数进行赋值时),其参数在函数中直接赋值, person person2=new person(); person2.work(); person2.work(10);//调用重载的work方法 person2.sleep(); System.out.println("======================="); //人物3调用继承下来的woker类 woker person3=new woker("小小","女",25,"10月8日","软件开发工程师","华为","110069"); //woker person3=new woker(); person3.work();//调用父类work方法 person3.work(3);//调用父类重载的work方法 person3.sleep();//调用父类sleep方法 person3.evection(3);//调用evection方法 } } #### 3. 编译运行结果: #### > **editplus编辑器下:** > **编译:javac 文件名.java > 运行:java 文件名** ![在这里插入图片描述][20181030185116675.gif] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdkYW4xMDI1_size_16_color_FFFFFF_t_70] [20181030185116675.gif]: /images/20220503/aa47b67740fa4e03a66fc7c4e33aa967.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lhbmdkYW4xMDI1_size_16_color_FFFFFF_t_70]: /images/20220503/0265a84dac6541879fb549bed72c1bd6.png
相关 面向对象编程:Java中的类、对象、继承等基本概念理解挑战 理解和掌握面向对象编程(Object-Oriented Programming,OOP)的基本概念,尤其是Java中的,确实存在一定的挑战。以下是几个关键点的理解: 1. 类 梦里梦外;/ 2024年09月17日 17:45/ 0 赞/ 10 阅读
相关 Java面向对象编程:类、对象和继承 在Java中,面向对象编程(Object-Oriented Programming, OOP)是其核心特性之一。下面详细解释类、对象以及继承的概念。 1. 类 (Class) 灰太狼/ 2024年09月15日 09:36/ 0 赞/ 32 阅读
相关 面向对象编程:Java中类继承疑惑 在Java中,类继承是面向对象特性的重要部分。当你遇到类继承的疑惑时,可以从以下几个方面进行理解: 1. **继承定义**: - 父类(Superclass):提供一些 悠悠/ 2024年09月14日 19:39/ 0 赞/ 16 阅读
相关 Java面向对象编程(OOP)实战:创建类、实现继承、封装属性等实例演示 在Java中,面向对象编程(Object-Oriented Programming, OOP)主要涉及到类的定义、继承关系以及属性封装等概念。下面我将为你提供一些实例演示: 怼烎@/ 2024年09月11日 13:18/ 0 赞/ 8 阅读
相关 JAVA,面向对象编程,类,属性 面向对象编程 面向对象编程与面向过程编程在功能上没有任何区别,只是在写法上面向对象是一种更为贴近生活的代码书写方式。方便与后期系统的维护与扩展。 1.对象 逃离我推掉我的手/ 2022年05月23日 04:49/ 0 赞/ 265 阅读
相关 JAVA面向对象编程——描述一个人类(有姓名、年龄、生日等属性),并继承出子类 > 前言: > 面向对象这个概念在很多语言中都有接触过,尤其在c++中这个概念就是整个语言的核心。那什么是面向对象?也许我们对它都有个似懂非懂的概念,但无法完全清晰的理解。 绝地灬酷狼/ 2022年05月14日 15:26/ 0 赞/ 1133 阅读
相关 java面向对象程序(利用函数,方法,继承等描述一个人类) 完成一个java application 应用程序,描述一个人类。要求如下: 要求此人类必须包含有人的姓名、性别、出生日期等基本属性(变量)。 要求此人类描述 £神魔★判官ぃ/ 2022年05月12日 09:16/ 0 赞/ 67 阅读
相关 Java继承(面向对象编程) Java面向对象包含的内容很多(面向对象的基本概念,类和对象,继承,接口,嵌套类和匿名类,反射,注解等等)。 所谓面向对象,就是其程序设计是以对象(Object)类为核心, Bertha 。/ 2022年01月27日 08:01/ 0 赞/ 319 阅读
相关 定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量 ....... /\\ 6:定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量 1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有) 再通过GetXXX()和 ゞ 浴缸里的玫瑰/ 2021年11月19日 12:00/ 0 赞/ 211 阅读
还没有评论,来说两句吧...