Java面向对象的理解和实现代码

    理解Java面向对象的重要知识点:

一、 类,对象

    类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的、红色的、白色的... 这里,汽车设计图就是我们说的类(class),生产车间就是new构造器(大部分对象都是new出来的),生产出来的汽车就是我们要说的对象。可以说java编程实质就是构建类的过程。

    

    对象?万物皆对象,宇宙中,如植物,动物,人类,每个个体都是各司其职、各尽所能的。这就要求对象高内聚、低耦合(简单理解就是人的大脑,它负责思考,想象,记忆,而不能呼吸,排毒,消化食物,从而保证它独立和高效)。对象具有两种东西状态(属性)和行为(方法),请看下面代码:

    Student.java

public class Student {
    String name;      //姓名
    int age;           //年龄
    String classNo;    //班级
    String hobby;     //爱好
    //输出信息方法
    public void show(){
        System.out.println(name + "\n年龄:" + age + "\n就读于:" +
            classNo + "\n爱好:" + hobby);
    }
}

    InitialStudent.java

public class InitialStudent {
    public static void main(String args[]){
        Student student = new Student();    //建立对象
        student.name = "张浩";            //给对象赋值
        student.age = 10;
        student.classNo = "S1班";      
        student.hobby = "篮球";
        student.show();            //调用方法
} }

二、封装,继承,多态

    封装?举个粗俗的比喻,我的移动硬盘存了很多各式各类的资料,但是舍友常常借用,时不时拿我的用(格式化?装系统?存电影?),这就给我这个拥有者非常大的不便,我就跟他声明,这个硬盘是我私有的,不能你得按照我允许的方式使用!对象也是这样,不能随意的存取内部数据,否则会造成“交叉感染”。所以我们需要封装:将属性私有化,提供公有的方法访问私有属性。

    Adult.java

public class Adult {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if (age < 18) {
            System.out.println("错误!最小年龄应为18岁!");
            this.age = 18; // 如果不符合年龄要求,则赋予默认值
        }
        else{
        this.age = age;
        }
    }

    public String toString() {
        return " [age=" + age + "]";
    }
}

    TestAdult.java

public class TestAdult {
    public static void main(String[] args) {
        Adult p1 = new Adult();      
        p1.setAge(20);              //通过seter、geter、toString来对Adult类的私有属性访问
        System.out.println(p1.toString());  //增加了数据访问限制,保证可维护性
    }
}

    继承?经理觉得小李设计的汽车设计图非常棒,但是现在推崇新能源,于是需要将引擎改成电能发动机。于是小陈轻而易举的将图纸中汽油发动机部分改成引擎发动机,再重制一下关系就完成了新图纸!这就是继承的作用:是使用已存在的类的定义作为基础建立新类,新的类可以拥有父类的特点,也可以衍生出更多的特点。这使得复用以前的代码非常容易,能够大大缩短开发时间。

    Person.java

class Person {                    // 定义人类
    public String mName;         // 姓名
    public int mAge;             // 年龄

    public void dining() {
        System.out.println("吃饱了...");
    }                            // 吃饭的方法
}

class Student extends Person {   // 学生类继承于人类
    public float mGrade;         // 成绩

    public void examination() {
        System.out.println("考试及格了...");
    }                            // 考试的方法
}

class Teacher extends Person {  // 教师类继承于人类
    public float mSalary;       // 薪水

    public void prelection() {
        System.out.println("上课很累...");
    }                           // 上课的方法
}

   TestPerson.java 

public class TestPerson {
    public static void main(String[] args) {
        Student std = new Student(); // 实例化学生对象
        std.mName = "李东";
        std.mAge = 18; // 为姓名和年龄赋值,访问的是父类中的成员
        std.dining(); // 调用吃饭的方法,访问的是父类中的成员
        std.examination(); // 调用考试方法,访问的是子类中的成员

        Teacher teacher = new Teacher(); // 实例化教师对象
        teacher.mName = "赵忠祥";
        teacher.mAge = 72;// 为姓名和年龄赋值,访问的是父类中的成员
        teacher.dining();// 调用吃饭的方法,访问的是父类中的成员
        teacher.prelection();// 调用考试方法,访问的是子类中的成员
    }
}

    多态?程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。小李喜欢听小鸟唱歌{麻雀,杜鹃,鹦鹉}

    小李:窗外的鸟儿,给我唱首歌。

    1.(鸟 bird = new 麻雀 )?

    2.(鸟 bird = new 杜鹃 )?

    3.(鸟 bird = new 鹦鹉 )?

    鸟儿:bird.sing()~~~~~

    小李:鸟儿唱的不错,你是哪种鸟?

    鸟儿: bird.shape()

    小李:(---如果上面蓝字定义的是3,是鹦鹉)哈哈!原来你是鹦鹉!

    人无完人,但会完蛋,如有错误,恳请指出!

(本文原创,转载请注明出处!)

Java面向对象的理解和实现代码

时间: 2024-10-13 11:39:31

Java面向对象的理解和实现代码的相关文章

对java面向对象的理解

前言: 在写博客前我们应该有个好的定位,可以是对知识的梳理和理解,可以是一种新技术,可以是对难点易错的解析和理解. 正文: java面向对象的理解.面向说的通俗点就是针对,对象就是有实际意义的事物(万物皆对象)其实也就是java中的一个参数,但这个参数实际代表了某个东西(比如你有个类Tourism,这个类对 属性姓名.年龄.当Tourism tou = new Tourism(),这个tou参数就实际代表了一个类Tourism的有意义对象,而某一个方法tourism(Tourism tou)那么

JAVA面向对象思想理解分析

1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情变简单了.面向过程-->面向对象:执行者-->指挥者将过程.功能封装进对象里面.面向对象三大特征:封装.继承.多态.(找对象,建立对象,使用对象,维护对象的关系.)老者境界:(万物皆对象!!!)例:公司招聘程序员:为了提高效率,公司老板从面向过程到面向对象(执行者-->指挥者)例:去饭店吃饭

Java面向对象的理解

Java是一门面向对象的编程语言(Object Oriented Programming,OOP), 这个句话是每个学习Java的程序员应该先深刻理解的一句话. 我们之所以将自自然界分解,组织成各种概念,并按其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来--除非赞成这个协定中的规定的有关语言信息的组织和分类,否则我们根本无法交谈. --Benjamin Lee Whorf(1897~1941) 在计算机编程中,也是对编程进行分解,组成各种概念,并

Java面向对象概要理解(1)

一.面向对象的基本思想 首先呢,学java的人都知道,Java是一种纯面向对象的编程语言,那么,什么是面向对象呢? 面向对象在现实生活中可以把任何一个存在的事物都可以称为对象,而每个对象又有自己对应的层级,属性和行为.比如人属于哺乳动物再往上对应的层级就是动物,这就是所谓的层级.人有什么就是属性,比如头发,鼻子,耳朵等等,行为就是能干什么,比如走,跑等等.那么在java中就从现实中提取客观存在的事物去构建出一个系统模拟现实,那么一个个的对象就构成了整个系统的架构.每个对象都会有自己对应的层级,属

二、Java面向对象(10)_代码块

2018-05-02 代码块 什么是代码块? 在类或者方法中,使用"{}"将多行代码封装在一起,形成一个独立的代码区,这就构成了代码块. 在代码块里的变量属于局部变量,只在自己所在区域的前后{}内有效. 代码块的分类 根据代码块定义的位置不同,分成三种 1.局部代码块:在方法里用一对"{}"括起来的数据,就是局部代码块, 一般我们不会直接使用局部代码块,只不过我们会结合if,while,for,try等关键字联合,表示一块代码区域. 2.初始化代码块(构造代码块):

黑马程序员---java基础-Java面向对象

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 面向对象是Java语言区别c语言的一个重要特点,也是学好Java必须掌握的重要部分.接下来我会根据视频教程,总结对Java面向对象的理解与应用,以及牵涉到的一些知识点. 一.面向对象 面向对象的特点: 1. 是一种符合人们思考习惯的思想 2. 可以将复杂的事情简单化 3.将程序员从执行者转换成了指挥者 4. 完成需求时: a)先要去找具有所需的功能的对象来用. b) 如果该对象不存在,那么创建

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

黑马程序员——Java基础---面向对象之理解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 面向对象之理解 一:理解面向对象           1,什么是对象 对象就是实际生活中的事物,可以说一切事物都是对象.   如:桌子,椅子,电脑,电视机等. 对象的3个主要特征: a)对象行为:这个对象能做什么,既可以让这个对象完成什么

复习 深入理解Java面向对象程序设计1

复习 深入理解Java面向对象程序设计 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类生成对象(Object).对象又叫做实例(Instance). 类由两大部分构成:属性及方法.属性一般用名词来表示,方法一般用动词来表示. 如果一个Java源文件定义了多个类,那么这些类中最多只有一个类是public的,换句话说,定义的多个类可以都不是public的. 在Java中进行方法的参数传递时,无论传递的是原生数据类型还是引用类型,参数传递方式统一是传值(pass by