面向对象编程(继承,封装,多态)

来源:互联网 发布:管家婆数据恢复 编辑:程序博客网 时间:2024/06/06 05:04

面向对象思想:

       面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:

1 系统中一切事物皆为对象;对象是属性及其操作的封装体;
2 对象可按其性质划分为类,对象成为类的实例;
3 实例关系和继承关系是对象之间的静态关系;
4 消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。

面向对象程序设计的基本特征有:

       
1,封装性:
       封装性是指将对象相关的信息和行为状态捆绑成一个单元,即将对象封装为一个具体的类。封装隐藏了对象的具体实现,当要操纵对象时,只需调用其中的方法,而不用管方法的具体实现。

2,继承性:
       一个类继承另一个类,继承者可以获得被继承类的所有方法和属性,并且可以根据实际的需要添加新的方法或者对被继承类中的方法进行重写,被继承者称为父类或者超类,继承者称为子类或导出类,继承提高了程序代码的可重用性,Java中一个子类只能继承一个父类,Object类是所有类的最终父类。

3,多态性:
       多态性是指不同的对象对同一事物而做出的相同行为,一个类A可以指向其自身类和其导出类,一个接口可以指向其接口实现类,在方法参数中,使用多态可以提高参数的灵活性。

实验要求:

有四个类,主类Store在包cn.edu.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包cn.edu.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product的子类,Product类为抽象类。

基本要求:

设计类Mobile和类MP3Player,使它们和类Product、Store组成一个完整的程序,且运行结果如下图所示。

这里写图片描述

整个程序项目结构如下:

这里写图片描述

注:上述图中只有2个包有用,其余包是没用的,不需要建立,是当初程序设计时的另一个实验,不过本次实验已经上将一次实验的内容包含进去了,功能也相对完善。

第一步:建立 package cn.edu.nwsuaf.jp.p4 包,创建Product父类。Product类含有Mobile类和MP3Player类的公共属性:name(名字),price(价格)。两个子类通过继承父类Product可以拥有name和price属性,两个子类只需要添加自己所用的属性就行了。

Product父类代码如下:

package cn.edu.nwsuaf.jp.p4.data;public abstract class Product {    public String name;    public double price;    public static int num;//用来统计数量    public Product(String name,double price){        this.name=name;        this.price=price;        num++;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }}

子类Mobile代码如下;

package cn.edu.nwsuaf.jp.p4.data;public class Mobile extends Product{    public double price1;    public Mobile(String name, double price ,double price1) {        super(name, price);        //通过super继承父类属性和方法        this.price1=price1;    }    @Override    public String toString() {        return name+"(" + price1 + "), " + price + " RMB";    }}

子类MP3Player代码如下:

package cn.edu.nwsuaf.jp.p4.data;public class MP3Player extends Product{    public MP3Player(String name, double price) {        super(name, price);    }    @Override    public String toString() {        return name+"on China Mobile, " + price + " RMB";    }   }

第二步 书写测试类,新建cn.edu.nwsuaf.jp.p4包用来存放 Store 测试类。代码如下:

package cn.edu.nwsuaf.jp.p4;import javax.swing.JOptionPane;import cn.edu.nwsuaf.jp.p4.data.MP3Player;import cn.edu.nwsuaf.jp.p4.data.Mobile;import cn.edu.nwsuaf.jp.p4.data.Product;public class Store {    public static void main(String[] args) {        // TODO Auto-generated method stub        Mobile m1=new Mobile("Meizo X3",399.0,256);        Mobile m2=new Mobile("Meizo E5",580.0,512);        Mobile m3=new Mobile("Xlive XM MP3 Play",930.0,256);        MP3Player p1=new MP3Player("E365",1780.0);        MP3Player p2=new MP3Player("M330",1450.0);        JOptionPane.showMessageDialog(null, "The products are \n\n"+m1.toString()+"\n"+m2.toString()+"\n"+m3.toString()+"\n"+p1.toString()+"\n"+p2.toString()+"\n\n"+"There are "+Product.num+" products.");    }}

       解释:在Mobile类中其实完全没必要在定义一个属性的,可以直接将输出结果中的“Meizo X3(256.0)”整个作为一个属性,在创建Mobile对象的时候,直接传“Meizo X3(256.0)”一个字符串就可以了,这里分开讲解,便于理解私有变量和继承的变量。

最后:运行测试类Store->Run As->Java Application,最终结果展示图如下:

结果展示图

showMessageDialog讲解:

要使用showMessageDialog对话框,要导入javax.swing.JOptionPane包。

JOptionPane.showMessageDialog(null, "提示消息.", "标题",JOptionPane.PLAIN_MESSAGE);

结果展示图:

这里写图片描述

第一个参数:null,用不到,直接写null;

第二个参数:“提示消息”,用于淡出对话框内容信息的显示;

第三个参数:“标题”,就是标题;

第四个参数:用于显示信息内容前的符号。在上述实验中,没有添加该参数,信息内容前有一个 i 符号。

阅读全文
0 0
原创粉丝点击