黑马程序员----三大特性与类、对象还有方法重载

---------------------- 黑马程序员 Android培训、期待与您交流! ----------------------

封装:

        封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。

       

继承:

       继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以分隔符先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

    注意:

        父类的构造器不能被子类继承

        方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问

        先构造父类,后构造子类,先this后super

       

多态:

        多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。

        运行时多态的三原则:

        对象类型不变。

        只能对对象调用编译时类型中定义的方法。

        在程序的运行时,根据对象的运行时类型,找覆盖后的方法来调用。(运行时动态类型绑定)

        多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。




类和对象:

    类:主观抽象,是对象的模板,可以实例化对象

        习惯上类的定义格式:

            package xxx;       

            import xxx;    

            public class Xxxx{

                属性、 构造器、方法

            }

 

        定义属性:实例变量

            格式:[ 修饰符 ]  类型 变量名

            实例变量定义在类中但在任何方法之外。

            实例变量有默认值:各种各样的0。(同数组)

            实例变量的作用域至少在本类内部,受访问控制符的限制。

            在重合作用域,实例变量和局部变量允许有命名冲突,“局部优先”。

           

        定义方法:

            格式: [ 修饰符 ]  返回类型 方法名( 参数列表 ) { ······ }

            java中所有参数都是值传递。

            当没有值返回时,返回类型必须被定义为void。

            返回类型必须与方法名相邻,其他修饰符可以调换位置。

           

        构造器:

            在创建对象的过程中调用的方法。

            构造器没有返回类型。

            构造器的名字与类名相同。

            格式为:[ 修饰符 ]  类名( 参数列表 ){  },修饰符可以是private、 protected、default、private

            在一个对象的生成周期中构造器只用一次,由系统自动调用,不允许手工调用。

            程序员没有提供一个构造器,系统会自动提供一个无参的构造器。

            获得对象的方式:

                通过new(在堆空间中申请分配空间),new 类名(),可以通过这种形式或的一个对象,这时的对象是无法使用,必须把他的地址存放进一个对象变量才能够使用。

                例如 :

                    Carc=new Car();

            注意:

                最好在写类时提供一个无参的构造器。

                       

        this关键字:

            this是个隐式参数,代表当前对象;

                publieclass Student{

                    privateString name;

                    publicvoid setName(String name){

                        this.name=name;     //this.name为当前对象的成员变量

                    }

                }

               

            如果某个构造方法的第一个语句具有形式this( ··· ),那么这个构造方法将调用同一类中的其他构造方法。

           

           注意:

                在构造器中this(...)必须放在该构造器的第一行。this不能出现在静态方法里面     

   

    类、对象、实例三者的关系:

        类:是对象的模板,可以实例化对象

        对象:类的个体

        实例:实现的对象

        Student s; 

        s=new student();

            其中 Student为类,s为对象,new Student()为实例,s赋值后也是实例了。

 

方法重载(overload):

    方法名相同,参数表不同,不考虑返回值类型(但最好还是使返回类型一致)。

    编译器根据参数,选择一个方法,如果没有完全匹配的,对于参数表采用“向上就近匹配原则”,但不允许模棱两可。

    方法重载屏蔽了一个对象的同一类方法由于参数不同所造成的差异。

---------------------- 黑马程序员 Android培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值