黑马程序员技术交流社区

标题: 面向对象第2天 [打印本页]

作者: 挨踢小白    时间: 2016-11-19 23:42
标题: 面向对象第2天
面向对象的三大特征  
封装
继承
多态
========================================
继承

继承的概述
子承父业
子类会自动拥有父类所有可继承的属性和方法
子类 extends 父类{}
好处:
1提高代码的复用性  提高开发效率
2 继承的出现 让类与类之间产生关系,多态的前提
java中 继承的特点:
1,只能单继承  不能多继承
2. 多个类可以继承一个父类
3.Java中存在多层继承
4.子类和父类是相对的概念
===================================
子类的成员变量和父类中的成员变量
1.名字不一样。
该是谁就是谁
2 名字一样
使用变量的时候遵循就近原则
先从方法中找 有没有这个变量 有就访问方法中的
否则去成员位置找 有就访问成员变量
否则去父类中找 有就访问父类
===============
S.o.p(sum);50  访问方法中的变量
s.o.p(this.sum);100 访问类中的变量   
s.o.p(super.sum)200 访问父类中的变量
============================
子类中你方法定义跟父类不一样情况
调用哪个方法名 找哪个方法名
现在本类中找 没有去父类找
-----------------------------
子类中方法定义和父类相同
优先访问子类的。(方法的重写)
方法重写:在子类中,存在和父类方法声明
(返回值,方法名,参数列表)一模一样的
这种现象叫方法的重写。
重写方法 作用:
1功能的加强。
沿袭了这个功能 可以做功能的加强
------------------------------
例子:
fu:
s.o.p("打电话")
zi:
s.o.p("打电话");
s.o.p("爆米花")
或者
super.call();
s.o.p("爆米花");
===============================
方法重写的注意事项:
1.子类方法覆盖父类方法时,访问权限必须
大于等于父类方法;
2。父类的private方法,是私有的,不可能被
继承。没有继承就不能被重写。
3.方法声明一模一样。(方法名 返回值类型 参数列表)
总结:当一个类是另一个类的一种时,可以选择继承。
banana is a fruit
cat is a animal;
当觉得继承父类的方法,需要加强的时候,
重写这个方法。
private<默认《public
==============================
private 没有继承。
==============================
抽象
动物中
里面的吃和睡
各种的具体的动物各种吃各种睡,
抽象方法的格式是
权限修饰符 abstract 返回值类型 方法名(参数列表);
例如:public abstract void eat();
如果一个类中 存在了一个抽象方法,该类必须是抽象类。
在class前面加abstract.
例子:
public abstract class animal;
当一个类继承了抽象类 那么必须要重写 抽象类中的抽象方法
当一个方法是一个抽象方法,就一定得写成抽象类。如果
父类有抽象方法,则子类中必须重写方法。
======================================
抽象的特点
1.抽象类和抽象方法要被abstract修饰。
抽象方法必须存在于抽象类中。
2抽象类不可以直接创建对象。
因为没有意义,抽象方法没有任何意义。
3.如果一个具体的类继承抽象类。那么必须重写抽象方法。
如果不重写,那么这个子类还是抽象类。
抽象的方法 需要子类必须重写的。
非抽象的方法 给子类继承去了 让子类沿袭 可以重写可以不重写
抽象类中可以没有抽象方法
什么用 就是为了不让你直接创建对象
abstract不可以和哪些关键字共存?
1 private
2 static
3 final
===========================
抽象类的细节问题:
抽象类是不是作为父类出现?

抽象类中可以有具体方法
抽象方法  要求子类必须重写 否则报错
具体方法  可以让子类继承 可以重写也可以不重写
=======================================
abstract 不能和private共存
private修饰的不能被继承
=======================================
员工类案例
分析  从具体到抽象
实现  从抽象到具体
======================
快捷方法
setter   getter
ctrl+shift+S
鼠标右键 source ---setter---getter
弹出框框 点你要写set get属性的钩钩
=======================
父类 对象优先于子类对象  
======================



作者: 老司机带带我    时间: 2016-11-19 23:54
班长,为什么你都6技术分了

作者: 挨踢小白    时间: 2016-11-19 23:55
老司机带带我 发表于 2016-11-19 23:54
班长,为什么你都6技术分了

拿黑马币换的

作者: 老司机带带我    时间: 2016-11-20 00:06
挨踢小白 发表于 2016-11-19 23:55
拿黑马币换的

6个黑马币换1技术分?还是8个???

作者: 挨踢小白    时间: 2016-11-20 00:22
老司机带带我 发表于 2016-11-20 00:06
6个黑马币换1技术分?还是8个???

6个黑马币换一个

作者: 九亿少女的梦    时间: 2016-11-20 07:19
总结的不错





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2