javase面向对象高级特性笔记1

 2019.12.23javase面向对象高级特性:

继承(inheritance):

  1. 也称泛化,继承性是子类自动共享父类属性和方法的机制,在定义和实

  2. 现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个

  3. 已经存在的类所定义的内容作为自己的内容,并加入自己若干新的内容

  4. 继承简化了人们对事物的认识和描述,有益于软件复用,是OO技术提高

  5. 软件开发效率的重要原因之一

  6. 是类之间的一种关系,一般类与特殊类之间的关系

  7. 继承关系的语义:“is a kind of”
    封装(encapsulation):

  8. 所谓封装是把对象的属性和行为结合在一个独立的系统单位内部

  9. 尽可能隐蔽对象的内部细节,只向外部提供接口

  10. 降低对象间的耦合度

  11. 封装的重要意义:

  12. 使对象能够集中而完整地描述并对应一个具体事物

  13. 体现了事物的相对独立性,使对象外部不能随意存取对象的内部数据
    多态(polymorphism):

  14. 指同一个命名可具有不同的语义

  15. OO方法中,常指在一般类中定义的属性或方法被特殊类继承之后,可以

  16. 具有不同的数据类型或表现出不同的行为,对于子类,可用不同的方法

  17. 替代实现父类的服务的方法
    一、继承
    继承的语法规则:
    <修饰符> class 子类名 extends 父类名{}

    特点:
    每个类只能有一个父类
    一个父类可以有多个子类
    子类拥有父类的属性和方法

    调用构造方法:执行子类构造函数时自动执行父类构造函数
    this
    作用:调用本类的构造器
    只能写在构造器的第一行
    super
    作用:调用父类的构造器
    只能出现在子类的构造器中,且必须是第一行
    super()中的参数,决定了调用父类哪个构造器
    如果子类构造其中没有super关键字,编译器会自动添加supper(),调用父类的空构造函数

    在同一个构造器中super()和this()不能同时出现
    

二、封装
1、使用访问权限修饰符对类的成员进行控制,在Java中称为“封装”。
2、用来控制类的成员和类的使用范围
封装
作用:隐藏类的实现细节
可以通过特定的方法对属性进行访问和复制,方便控制属性的输入
可以检查数据

	权限修饰符:
			  同一个类    同一包中的类  不同包的子类  其他包中的类
		private     √        
		default     √        √
		protected   √        √           √
		public      √        √           √             √
		
		public > protected > default > private

拓展:重写和重载
1、@Override//表示重写(覆盖),对父类的方法重新实现
2、/**
* 方法的覆盖
* 子类中的方法名与父类相同,实现方法不同。
* 子类继承父类,方法名相同、参数列表相同、返回值相同
*
* 方法的覆盖需要满足的条件
相同的方法名
相同的参数列表(参数数量、参数类型、参数顺序都要相同)
相同的返回值类型

	方法的重载
		在同一个类中,方法名相同,参数列表不同(参数的个数或参数类型)
 */

1、抽象类
/**
抽象类:包含了抽象方法的类
抽象方法:
[访问权限修饰符] abstract 返回值类型 抽象方法名 (参数列表) ;

 子类继承于抽象类,就要实现父类中的抽象方法,否则只能把自己定义为抽象类
抽象类不能创建对象
抽象方法不能为static;

必须声明为抽象类的情况:
	一个类中包含一个或多个抽象方法的时候
	当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;
	当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;

/
2、抽象类的规则
注意:
抽象类不能被实例化;
包含的抽象方法必须在其子类中被实现,否则子类只能声明为abstract;
抽象方法不能为static;
在下列情况下,一个类必须声明为抽象类:
当一个类的一个或多个方法是抽象方法时;
当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部
分;
当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;
1、 final关键字
类:用final修饰的类,不能够被继承
属性:用final修饰的属性,不能被修改
方法:用final修饰的方法,不能被覆盖
1、 接口
/
*
*

  • 接口: 语法规则:[访问权限修饰符] interface 接口名 { 接口的成员 }

    • 在接口中没有具体实现的方法,都是抽象方法。*
  • 接口中方法的定义

  • 1.jdk8开始可以在接口中使用default关键字修饰方法,使方法可以拥有具体实现

  • 2.用static关键字修饰方法,可以使用接口名直接调用方法

  • 3.只有声明,没有具体实现(最常用)
    */
    三、多态
    多态:通过不同的子类对象,覆盖相同的父类方法,实现不同的效果

  • 向上转型(上溯造型)
    父类类名 对象名=new 子类类名()

     具有继承或实现关系
     向上转换损失了子类新扩展的属性和方法,仅可以使用从父类中继承的属性和方法
    

    向下转型(下溯造型)
    子类类名 对象名=(子类类名) 父类对象
    将父类对象显示的转换成子类类型。
    曾经向上转换过的对象,才能再向下转换。对象不允许不经过上溯造型而直接下溯造型。

    多态存在的三个必要条件
    要有继承,或实现
    要有重写(覆盖)
    父类引用指向子类对象
    */

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值