黑马程序员_02面想对象三特性

来源:互联网 发布:特效图片制作软件 编辑:程序博客网 时间:2024/06/06 02:28


---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------


                                面向对象小结

一:传统的过程式的编程语言和java面向对象编程语言用公式表达是
    传统编程语言:程序=算法+数据。
    面向对象语言:程序=对象+消息。
二:面向对象的三个特性:
    1:封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。

面向对象计算始于这个基本概念, 即现实世界可以被描绘成一系列完全自治、封装

的对象,这些对象通过一个受保护的接口访问其他对象。封装是 一种信息隐藏技术,

在java中通过关键字private实现封装。什么是封装?封装把对象的所有组成部分组合

在一起,封装定义程序如何引用对象的数据,封装实际

      注意:封装不等于私有,私有仅仅是封装的一种表现形式。
  
   例:
        public class People
       {
            //属性封装
        private String name;
             private int age;
             People(String name,int age)
             {
                 this.name=name;
                 this.age=age;
              }
             //属性设置
              public void setName(String name)
             {
                     this.name = name;
             }
             public void setAge(int age)
             {
                     this.age = age;
             }
            //属性获取
             public String getName()
             {
                      return name;
             }
             public int getAge()
             {
                      return age;
             }

    2:继承: 在java中支持单继承和多层继承,不支持多继承。
            格式:class子类名 extends 父类
                 class 父类
                 {}              
                            class 子类 extends 父类
                 {}  
                      注意:接口和接口之间是支持多继承的。
        实例:(摘自课外书)
                  //建一个A类  
          class A{  
              / /成员变量 其中num是实参  
            int num=0;  
              //成员方法,其中 i 是型参  
           public A(int i){
                      //输入int型文件输出下面  
                 System.out.println("aaaaaaaaaaaaaaaaaaa");  
                 System.out.println("i= "+i);  
             //把输入的i赋值给成员变量num  
                 num=i;  
                       }  
                 }  
             //B继承A  
          class B extends A{  
              int num=0;  
             //成员方法B.  
               public B(){  
            //继承类A的方法.因为B继承了A必然继承了A的特性.所以输入int值10令

              方法实现.  
              super(10);  //super在后面博客中会提到,

           System.out.println("bbbbbbbbbbbbbbbbbbbb");  
           / /这里的num是类B的.  
            System.out.println("num= "+num);  
              //如果想显示类A的num则需要用下列的super.num.这里注意num在类A

               中需是成员变量才可以.  
            System.out.println("super.num= "+super.num);  
              }  
              }  
            //建立测试类C  
             public class C{  
            //main  
            public static void main(String aa[]){  
           //new 一个对象B()  
             new B();  
             }  
     3:多态:
           对于多态,可以总结它为:
 
       一、使用父类类型的引用指向子类的对象;
 
       二、该引用只能调用父类中定义的方法和变量;
 
       三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,

将会调用子类中的这个方法;(动态连接、动态调用)
 
       四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”

重写“了父类中的变量,那么在编译时会报错。
         多态向上转型:父类通过子类去实例化,实际上就是对象的向上转型。
             向下转型:也就是说父类的对象可以转换为子类对象,但必须强制转换。
         总之:向上转型可以自动完成。
               向下转型必须进行强制类型转换。


--------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! -----------------

原创粉丝点击