JAVA面向对象编程

您所在的位置:网站首页 java中体重用什么定义 JAVA面向对象编程

JAVA面向对象编程

2024-07-10 13:03| 来源: 网络整理| 查看: 265

前言: 面向对象这个概念在很多语言中都有接触过,尤其在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 文件名

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3