黑马程序员_java基础知识总结(1)面向对象基础总结

------- android培训java培训、期待与您交流! ----------

1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
(1)什么是抽象方法
抽象方法就是用abstract关键字修饰的方法
抽象方法没有方法体, 只有"修饰符 返回值类型 方法名(参数列表)"
有抽象方法的类必须定义为抽象类, 抽象类可以没有抽象方法.
(2)什么时候使用抽象类
在多个类都有相同的方法声明, 并且多个类都是某一类事物的子集时, 就应该定义父类
多个子类中相同的方法, 可以直接在父类中定义, 子类直接继承
多个子类中方法签名相同, 方法体不同的方法, 无法在父类中定义出来, 但是可以定义成抽象方法, 不定义方法体, 具体实现由子类来做
(3)继承抽象类
定义一个抽象类的子类时, 必须实现所有的抽象方法. 
除非子类也是抽象类.
2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
(1)继承的特点
子类继承父类将得到父类所有可见的成员. 父类不能得到子类的.
一个父类可以有多个子类, 但一个子类只能有一个父类.
可以多重继承, 一个类可以继承另一个子类, 这时当前类将继承到父类以及父类的父类中的所有功能.
(2)继承的原理
在创建子类对象的时候, 会先加载父类, 再加载子类. 
先创建父类对象, 再创建子类对象.
访问成员的时候, 先找子类, 再找父类.
(3)父类构造函数问题
在构造函数的第一条语句, 要么是this()调用当前类构造函数, 要么是super()调用父类构造函数.
如果没写this()也没写super(), 那么就会自动生成一个super(), 默认调用父类无参构造函数.
原因: 创建子类对象需要创建父类对象, 没指定用哪个构造函数创建, 就默认使用无参的创建.
注意: 如果父类没有无参构造函数, 那么定义子类的时候, 必须显式声明一个构造函数, 内部调用父类有参的构造函数.
(4)子类重写(Override)父类的方法
子类中可以和父类定义一个一模一样(返回值类型, 方法名, 参数列表)的方法, 这就叫重写.
当子类重写父类方法之后, 再次调用时, 就会调用子类的方法.
重写之后, 如果还想调用父类方法, 那么就可以使用"super.方法名()"的形式.
(5)向上转型
子类继承父类之后, 将得到父类的所有功能, 所以子类对象可以当作父类对象使用.
注意: 父类不能当作子类用, 因为子类特有的方法父类没有. 子类的子类也可以当作父类使用.
(6)子类当父类用时成员访问的问题
子类当父类用时, 父类变量引用子类对象.
是哪个类型, 就在哪个类型中找变量, 如果没有也找父类的. 没用, 因为成员变量通常都是私有的, 不继承.
(6)强制类型转换
子类当作父类来用时, 不能通过父类变量调用父类中没有的(子类特有的)方法
如果子类拥有该方法, 那么可以把父类变量强转回子类, 通过子类变量调用
在强制类型转换之前, 最好使用instanceof判断一下类型是否匹配, 避免出现ClassCastException
3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(1)封装的健壮性(安全性)
通常我们在定义类的时候, 成员变量都是私有的(private), 不允许其他类直接访问.
为了能让其他类访问到成员变量, 我们应该提供公有的(public)get和set方法.
(2)set方法格式
public void set变量名(变量类型 变量名) {}
(3)get方法格式
public 变量类型 get变量名() {}
4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。在定义函数的时候, 形参定义成父类类型, 使用父类变量调用方法.这样就不用为每个子类定义方法调用, 提高代码的复用性和可维护性.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值