博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java面向对象的理解和实现代码
阅读量:5154 次
发布时间:2019-06-13

本文共 3762 字,大约阅读时间需要 12 分钟。

    理解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,是鹦鹉)哈哈!原来你是鹦鹉!              

     所以,多态的过程实质是一个抽象指令,让一组具有相同行为单具有不同内容的个体协同工作的这样的一个过程。

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

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

posted on
2014-06-19 01:08 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/Tauran/p/3795430.html

你可能感兴趣的文章
poj 2186 Popular Cows 有向图强连通分量 tarjan
查看>>
hdu 2545 并查集
查看>>
[BZOJ4568][SCOI2016]幸运数字(倍增LCA,点分治+线性基)
查看>>
尤金·卡巴斯基:卡巴斯基实验室调查内网遭黑客攻击事件
查看>>
android之Handler Runnable实现倒计时
查看>>
putty修改编码
查看>>
安全版字符串操作函数
查看>>
数据库msqlserver的几种类型及解决MSSQLServer服务启动不了的问题
查看>>
CSS轮廓 边距 填充 分组和嵌套
查看>>
JAVA多线程--线程阻塞与唤醒
查看>>
JavaSE语法基础总结
查看>>
python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析
查看>>
线性表9 - 数据结构和算法14
查看>>
循环移位
查看>>
Spring mvc4 + ActiveMQ 整合
查看>>
Python基础(8)素数输出
查看>>
POS Tagging 标签类型查询表(Penn Treebank Project)
查看>>
Cookie/Session机制详解
查看>>
搭建Docker环境---Docker概述
查看>>
UVa 11383 少林决胜(二分图最佳完美匹配)
查看>>