A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面向对象(世间万物皆对象)——
    1.面向过程与面向对象的区别:
        遇到问题,面向过程想的是自己怎么解决;而面向对象想的是我该找谁来帮我解决问题,找不到就自己创造一个人来帮自己解决;
    2.面向对象的好处:
        1.符合人类的思维习惯;
        2.相比面向过程强调的是执行者的作用,而面向对象强调的是指挥者的作用;
        3.能将复杂的问题简单化;
    3.类与对象的定义以及关系
        1.类——是对现实生活中某一事物的描述;而事物又具有相应的属性和功能;对应的在类中将属性称为类的成员变量,功能称为成员方法;
        2.对象是类的实例化
        3.通过对象调用类的方法(功能);
    4.成员变量与局部变量的区别
        1.定义位置不同:成员变量定义在类中方法外;局部变量定义在方法内或语句中;
        2.作用域不同:成员变量整个类;局部变量方法内或语句内;
        3.默认值不同:成员变量不初始化,有默认值;而局部变量使用前必须初始化,无默认值;
        4.内存位置不同:成员变量堆内存;局部变量栈内存;
        5.生命周期不同:成员变量整个类结束时死亡;局部变量在所在方法结束或所在语句结束时立马死亡;
    5.写main方法的类叫做测试类;
   

封装——(针对的是一个类,对一种事物的封装)
    1.封装好处:提高了代码的安全性和复用性;
    2.private(权限修饰符):成员修饰符,私有,被修饰的成员变量只能在本类中(直接)使用;所以被private修饰后,得提供相应的公共访问的方式(方法)即方法;get/set方法
    3.相比没有private修饰时,人们在测试类中用类的对象直接(对象.变量名)就可以使用, 这样就可以随意更改成员变量的值,若值违背现实情况,也没有提示报错,具有安全隐患;所以用private修饰后,代码的安全性提高了,测试类中想调用成员变量只能通过set/get方法赋值取值;而在set/get方法中我们可以对所要赋的值进行限定,这就是安全性提高的原因;
    4.在类中,当成员变量与局部变量重名时,使用遵循“就近原则”
    5.this——
        1.区分成员变量和局部变量;
        2.在测试类中,类的哪个对象调用自定义类中的成员方法,则成员方法中的this关键字就代表这个对象;
    6.private仅是封装的一种体现形式;




继承——(针对多个有关系的类,是类之间的一种关系,使类联系紧密)/extends
    1.继承好处:
        1.复用性
        2.多态的前提
    2.继承:父类,子类;子类可以自动拥有父类非私有的成员;
    3.注意:
        1.只能单继承,不能多继承
        2.一个父类可以拥有多个子类;
        3.java支持多重继承;
    4.继承体系:
        根源:子类共性抽取,形成父类;
        父类越往上越抽象;子类最具体,不但有共性,还有自己的特性;
    5.子类对象调用成员
        1.子类自己有的,就直接调用自己的;
        2.子类没有的就调用父类的;
    6.super:当子类与父类出现同名变量时,用super关键字区分
        super调用父类成员;this调用本类成员;
    7.重写(是对父类功能的扩展)
        在继承中,重写,子类重写父类的方法;除了父类方法中的功能外,还可以添加新的功能;
        注意:重写时子类权限>=父类方法权限,其他一样
        权限:public>protected>default(默认)>private
    8.default:不写表示默认,写了编译出错;
    9.抽象类:abstract
        1.抽象类是子类共性抽取形成的,抽象类中的抽象方法不知道具体执行功能,所以没有方法体;
        2.抽象类/抽象方法都用abstract修饰;
        3.抽象类中可以没有抽象方法,但有抽象方法的类一定是抽象类
        4.抽象类不能创建对象;强制子类继承
            abstract与private/final/static不能共存;
        5.抽象类强制要求子类重写父类方法(重写扩展功能,保障程序功能的完整性);
        6.子类必须全部重写父类中的抽象方法,然后才能创建对象;若指重写一部分,子类还是一个抽象类;
        7.继承关系存在,则子类在创建对象的同时,系统默认为父类创建对象;



接口——(接口类似抽象类但   接口!=抽象类)(世间万物都用功能,即世间万物都有接口)
    1.接口是功能的集合;
    2.接口中方法全部抽象方法,只描述具备的方法,不具体实现;
    3.定义; interface   类比    class
    4.成员方法定义固定格式;
        public abstract 返回值类型 方法名(参数列表);
        public 写不写都可以,不写也代表public;
    5.成员变量定义;
        public static final 数据类型 变量名=值;
        常量,固定值,不可更改;
    6.自定义实现类(实现)接口的功能;创建实现类对象;
    7.接口成员变量定义的特点:public static fianl 修饰符写不写都存在;
          成员方法定义特点:public abstract 写与不写都存在;
    8.实现类重写接口中的一部分方法,则实现类是抽象类;
    9.接口可以多实现(implements)——不存在安全隐患
        类的多继承 存在安全隐患是因为,抽象类中有非抽象的方法,如果两个抽象方法中有同名的非抽象方法,子类重写不能确定(成员变量)(成员方法)重写哪一个,出现安全隐患;
        接口的多继承 不存在安全隐患是因为,接口中全部都为抽象方法,没有具体的方法体,接口功能的实现依赖于子类的重写,所以即使多个接口中有同名的方法,也不会出现安全隐患;
    10.多实现时应避免两个接口中存在返回值类型不同、方法名相同、参数列表相同的情况;因为在实现类重写接口方法时,实现类中将会出现同名方法,编译出错;
    11. 多实现弥补了单继承的缺陷;
    12.——        类与类     单继承
               接口与接口  多继承
               类与接口   多实现

    13.(面试)java中有多继承吗?
        类只有单继承;接口与接口间存在多继承;

    14.接口思想:
        符合规则,降低耦合,扩展功能
    15.优先使用接口,次选抽象类



多态——
    1.多态——父类引用变量指向子类对象;(向上转型)
    2.三种形式——
        普通类;
        抽象类;
        接口;
    3.多态两大转型
        1.向上转型(调用子父类共有的方法):子类转为父类,由小转大,多态的常规写法,在父类引用变量调用成员变量时,编译时看父类,运行时还看父类;     调用成员方法时,编译看父类,运行看子类(因为继承导致多态,父类中的方法都被子类重写了,而且功能更加完善;所以运行时看子类)
        2.向下强转(调用子类特有的方法)
    4.instanceof 关键字——用来判断某个对象是否属于某种数据类型
        demo:
            一个方法返回值类型是父类Animal,则在方法中返回一个子类对象;而方法外的人并不知次方法的具体实现细节,所以只知道调用此方法返回的是一个动物Aniaml类的对象,不知道具体是什么动物,此时就需要 instanceof来判断;
    5.@override 标志标识“这是一个重写的方法”;
            

2 个回复

倒序浏览
private仅是封装的一种体现形式?这话不明白啥意……
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
duanqichao 发表于 2016-11-19 01:06
private仅是封装的一种体现形式?这话不明白啥意……

从封装的作用来说,封装就是提高了代码的安全性和复用性,而private私有化成员,就是起到这么一个作用,所以说private是封装的一种体现形式
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马