java 简述类的封装性、继承性、多态性

9 篇文章 0 订阅

一:什么是封装性、继承性、多态性

         封装性:通俗说就是一个盒子,多个对象、功能、组件等装在一个盒子里,内部具体是什么不知道,用到它时,使用特定方法或功能去调用它。即声明一个变量(其属性值是private)不能给其变量直接赋值,但可以通过方法构造去复制。意思近似于软件工程中讲到的黑盒测试。

        继承性:通俗说就是实际生活中儿子与父亲就是继承关系,制作了一台电脑,再想生产时直接按照已生产出来的那台电脑生产就行,不必再研究其细节。即发生在两个类之     间,子类继承父类的所有属性或方法,但该属性或方法不是private类型,继承的属性或方法访问权限不变。

       多态性:该特性是在继承性的基础上来说的,父类可以有多个子类,每个子类可以有各自的不同的方法

二:java代码解释封装性、继承性、多态性

编码解释:现有3种乐器:小提琴violin、钢琴piano、小号trumpet

1.封装性

class  violin{

    private   double    price; '定义属性价格

    public    void play() {system.out.println("violin   Plays");}     '定义方法:演奏

    public    void     tune() {system.output.printin("violin  tune")}    ‘定义方法:校音

}

class  piano {

    private    double     price; '定义属性价格

    publicv   oid     play() {system.out.println("piano    Plays");} '定义方法

    public   void     tune() {system.output.printin("piano     tune")}

}

class trumpet{

    private    double     price;            //'定义属性价格

    public    void play() {system.out.println("trumpet    Plays");}            //定义方法

    public    void tune() {system.output.printin("trumpet    tune")}

}

 

 

public class test '定义新的类

{

    public   static    void    main (int,string[])             //定义新的方法 main,

    {

       violin1 =new    violin();               //用new 定义创建对象,以便后面调用

       piano2 =new    piano ();

       trumpet3 =new    trumpet();

       s1.tune();             //调用对象的方法

       s2.tune();

       s3.tune();

       s1.play();

       s1.play();

       s1.play();

    }

}

注意加背景色部分:1.定义类,用关键字class       2.属性为私有的,方法为公共的

2.封装性

        以上不足之处就是:乐器不仅有价格属性,还有品牌等属性,如果我要添加新的属性,必须一个个的添加,我如果要添加100个,怎么办,一个个添加,未必太麻烦,继承性可以解决以上问题

abstract class instrument     //抽象出一个类

{

    double   price;   //价格

    string   brand;    //品牌

    public   void    play();  //演奏,只是定义了一个方法的接口,具体怎样实现没给出

    public   void    tune();  //调音

}

class    violin   extends    instrument 

{

    //次时的属性会自动继承抽象的类的属性,就不用写了

    public   void    play(){system.out.println("violin   Plays");} //定义方法,怎样实现

    public   void t   une(){system.output.printin("violin    tune")}

}

class piano   extends    instrument 

 {

    public   void      play(){system.out.println("piano    Plays");} //定义方法

    public   void    tune(){system.output.printin("piano    tune")}

}

class trumpet   extends instrument 

 {

    publicvoid play(){system.out.println("trumpet    Plays");} //定义方法

    publicvoid tune(){system.output.printin("trumpet    tune")}

}

public     class    test            //定义新的类

{

    public   static    void main(int,string[]) //定义新的方法 main,

    {

       violin1=new  violin(); //用new 定义创建对象,以便后面调用

       piano2 =new piano();

       trumpet3 =new trumpet ();

       s1.tune();                //调用对象的方法

       s2.tune();

       s3.tune();

       s1.play();

       s1.play();

       s1.play();

    }

}

注意:1.属性值类型为默认的,因为要继承。属性必须不是私有的      

           2.先抽象出一个类,此类有属性和方法,但方法只定义了一个方法的接口,具体怎样实现没有给出

           3.继承用关键字extend表示       

          4.实际类中就不用写类的属性了,就自动继承抽象类的属性了

3.多态性

        以上不足之处是:乐器必须排队即violin表演完piano、trumpet才能表演,多态性可以解决以上问题

在继承的代码上写:

public   class   test                  //定义新的类

{

    public  void    yanzou(instrument x)               //定义一个新的方法,乐器 参数为x

    {

       x.play();             //当给对象传递不同的x时,不同的方法被调用

    )    

    public    static     void    main(int,string[])              //定义新的方法 main,

    {

       violin1 =new violin();             //用new 定义创建对象,以便后面调用

       piano2 =new piano();

       trumpet3 =new trumpet();

       s1.tune();     //调用对象的方法

       s2.tune();

       s3.tune();

       s1.play();

       s1.play();

       s1.play();

    }   

     instrument    ss1 =new violin();             //定义新的对象

    instrument    ss2 =new piano();

    instrument    ss2 =new trumpet();

    test a=new test();                //定义新的对象

    while(!乐谱结束)                //体现多态,对不同的对象传同样的消息做出不同的反应,结束条件是乐谱结束

   {

      instrument    a=读取下一个演奏对象

      a.play();

 }

}

java中不知道循环多少次时用while

【总结访问控制符】

java中访问控制符就是被声明的东西可以被谁使用,就如公司中的机密文件,那些人可以看,那些人不可以看

java中共有4中访问控制符

public:共有的

private:受保护的

default:默认的

private:私有的

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值