您的位置:首页 > 编程语言 > Java开发

Java 继承 方法重写 super关键字 访问权限修饰符

2019-04-19 20:48 549 查看

概念:

  • 总结: 类是对一批对象的抽象,继承是对一批类的抽象
  • 继承的格式:
  • 类和类之间的关系:
  • 1.继承 (is a)
  • 2.组合 (has a)
  • 通过extends关键字可以实现类与类的继承
  • class 子类类名 extends 父类类名 {
  • }
  • 被继承的这个类称为父类,基类或者超类
  • 继承的这个类称为子类或者派生类
  • 继承的特点:
  • 1.通过extends关键字,实现了继承之后,让类与类之间产生了关系,建立关系是好还是坏? 有好友坏
  • 2.继承的本质就是抽取共性代码,多个重复代码的向上抽取,简化代码 BaseDao BaseActivity
  • 3.类是对一批对象的抽象,继承是对一批类的抽象
  • 4.父类又被称为超类,或者基类,子类又被称为派生类
  • 5.Java是面向对象语言,万事万物皆是对象,为了满足这个设计原则,所有的类都直接或者间接继承自Object类
  • 继承的好处:
  • 1.简化了代码
  • 2.提高了扩展性
  • 3.提高了可维护性
  • 开闭原则: 对扩展开放,对修改关闭
  • 继承的缺点:
  • 开闭原则: 对扩展开放,对修改关闭
  • 高内聚,低耦合: 类与类之间,功能与功能之间,模块与模块之间,功能尽量内聚,不同模块之间,尽量独立
  • 1.造成了耦合性过高,牵一发动全身
  • 注意: 继承一定要慎用,主要利用继承简化代码的优点
  • 继承的注意事项:
  • 1.单一继承性
  • 2.支持多层继承
  • 3.如果父类成员使用private修饰,那么子类不能被继承
  • 4.如果一个子类继承了父类的属性和方法还可以有自己特有的属性和方法
  • 5.当子类和父类的成员变量重名的时候,子类优先
  • 6.构造方法不能够被继承
  • 什么时候使用继承?
  • 1.一般在写代码的时候发现代码中存在重复代码,需要向上抽取,考虑继承
  • 2.当某个类的设计非常复杂的时候可以考虑继承 例如: 设计一个窗口类
  • 使用继承的步骤:
  • 1.先写子类
  • 2.观察多个子类是否存在共性代码
  • 3.如果存在,抽取共性代码到父类中
  • 4.子类继承父类
  • 5.将子类共性代码删除
  • 注意: 父类命名: A is a B

为什么需要方法重写?

当父类的方法不能够满足子类的需求的时候,需要方法重写

方法重写的特点:
1.发生在具有子父类的两个类中
2.方法名相同
3.参数列表完全相同
4.返回值类型可以相同或者是其子类
5.访问权限修饰符不能够严于父类

注意事项:
1.private修饰的方法不能够被继承,所以不能够被重写
2.构造方法不能够被重写
3.子类重写父类的方法时,访问权限修饰符不能更低,严格
4.返回值类型相同或者是其子类
5.重载和重写的区别

super关键字

this和super的区别?
this可以理解为当前对象,谁调用this就代指那个调用者对象,
每次创建一个对象,默认都会创建一个this变量指向同一个堆区空间
super本质是父类存储空间的标识,但是你可以理解为父类对象,
那么同样可以使用super这个关键字来访问父类的成员

访问成员
成员变量
this.成员变量
super.成员变量
成员方法
this.成员方法
super.成员方法
构造方法
this(参数列表)
super(参数列表)

注意:
1.任何一个类的无参或者带参构造方法的第一句都默认省略 super();
2.任何一个类都直接或者间接继承自Object类
3.为什么设计Object类,满足了万事万物皆对象的原则
访问根类Object的无参构造方法的意义何在? - 加载Object类中静态成员和静态代码块
4.创建一个子类对象默认会去调用父类的构造方法,那么有没有在创建子类对象的同时也创建了父类对象呢?
-- 没有创建父类对象,本质就相当于访问了一个普通方法,创建对象开启空间需要new关键字
5.super访问父类带参构造方法的意义? -- 帮助子类初始化父类继承下来的成员,简化编程
6.静态环境/静态上下文(static修饰的方法),不能够出现this和super
7.super必须出现在构造方法的第一句
8.this和super不能够共存

##访问权限修饰符 本类 同包下(普通类,子类) 不同包的子类 不同包的普通类

public Y Y Y Y

protected Y Y Y N

default Y Y N N

private Y N N N

访问权限修饰符的特点:
1.public对一切类可见
2.protected对同包下和不同包的子类可见
3.default仅对同包下可见
4.private仅对本类可见
5.访问权限修饰符有四个,访问权限修饰符可以修饰成员变量,成员方法,还可以修饰类(只有public可以)
在这里需要注意,其实protected/private也可以修饰类,但是必须是内部类
6.访问权限修饰符的宽严关系
public > protected > default > private
7.Java当中封装就是通过访问权限修饰符来实现的
封装: 就是屏蔽内部的成员,而屏蔽内部的成员是通过访问权限修饰符来控制的

类的本质就是组织代码,封装数据

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐