美文网首页
面向对象高级

面向对象高级

作者: 想吃热干面了 | 来源:发表于2019-02-28 14:25 被阅读0次

类的继承:一个类(子类)通过extends继承一个已有的类(父类),子类继承父类的所有属性还有方法,同时也可以增加自己的属性和方法。

单继承:每个类只能继承一个类,一个父类可以由多个子类

好处:简化代码 易于维护

实例化过程:子类先调用父类构造器,再调用子类构造器。即先实例化父类,再实例化子类。

super():调用父类的构造器,只能在子类构造器中且必须首行。如没有,会默认加上。

this():调用本类的构造器,只能写在构造器的第一行

super()和this()不能同时出现

权限访问修饰符

  • private:私有的 限制类外访问
  • friendly(default):默认的 类内,同一包的类
  • protected : 类内,同一包的类,不同包的子类
  • public : 公有的 同一工程访问

方法的覆盖(重写):对父类中的方法进行改造,要有继承关系

规则:

1.相同的方法名
2.相同的参数
3.相同的返回值类型
4.重写的访问权限不小于父类被重写方法的访问权限
5.只修改代码块内容

引用数据类型的转换

上溯造型:向上转换,子类转换为父类,自动转换

要有继承或实现关系,失去子类自己的属性和行为,只能使用父类中的.

下溯造型:向下转型,强制转换 将父类对象显示的转换成子类类型

曾经向上转换过的对象,才能再向下转换。对象不允许不经过上溯造型而直接下溯造型


image.png

多态:类的多种实现,不同对象对同一行为做出的不同反应

条件:

  • 要有继承和实现
  • 方法的重写
  • 有上溯造型
    优点:简化代码,易于扩展,改善代码的组织性和可读性

static关键字:可以修饰属性 方法 代码块 只能修饰l类成员

静态变量:所有对象共享,类变量,类存在static变量就存在
访问方式:类名.属性 对象名.属性(需实例化)

静态方法:不需实例化,也可直接访问。类方法。
访问方式:类名.方法 对象名.方法(需实例化)
作用:简化方法的使用 便于访问静态属性
注意:

  • 静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员
  • 静态方法中不能使用this、super关键字
  • 静态方法不能被非静态方法覆盖,静态方法不能修饰构造器

静态代码块:

  • 一个类中由static关键字修饰的,不包含在任何方法体中的代码块
  • 当类被载入时,静态代码块被执行,且只被执行一次
  • 静态块经常用来进行类属性的初始化

final关键字

可修饰的元素:

  • 变量:不能被重新赋值(在声明时赋值,或在构造器中赋值) 无默认值
  • 方法:不能被重写

静态常量:被static和final修饰的成员变量,必须字母大写,单词间用下划线

抽象类:abstract关键字(有抽象方法和非抽象方法)

抽象方法:abstract关键字修饰,只有声明,没有实现。
规则:

  • 不能被实例化
  • 内部的抽象方法必须被重写 所以抽象方法不能为static

什么情况?类必须被声明为抽象类:
1.有抽象方法
2.继承抽象类,而没有全部重写父类的抽象方法
3.实现接口,而没有全部重写其中的抽象方法

接口(interface)

  • 只包含常量和抽象方法
  • 对类来说是一套规范,一套行为协议
  • 不能实例化 因为没有构造器
    接口的默认:常量:public static final 抽象方法: public abstract

接口与抽象类的区别

接口:

1.只能定义常量,只能有抽象方法、用interface修饰
2.一个类可以实现多个接口,接口和接口之间可以多继承
3.接口中的方法必须被重写
4.接口更灵活,松耦合

抽象类:

1.可以定义常量和全局变量,可以非抽象方法,abstract关键字修饰
2.一个类只能继承一个抽象类

内部类

• 内部类特性
 内部类就是定义在另一个类内部的类。
 内部类对于同一包中的其它类来说,内部类能够隐藏起来。
• 注意
 内部类可以访问其外部类中所有的属性和方法
 无需创建外部类的对象,即可从内部类访问外部类的变量和方法。
 必须创建内部类的对象,否则无法从外部类访问内部类的变量和
方法。
 如果内部类中有和外部类同名的变量或方法,则内部类的变量和
方法将获得比外部类的变量和方法更高的优先级。
 不能定义static变量

一个类只会被这个类所调用,其他类不会使用他,你可以把它定义成一内部类,这样可以隐藏实现细节,避免错误的调用。

• 内部类特性
 普通类的访问权限修饰符
 default
 public
 内部类的访问权限修饰符
 default
 public
 protected
 private


image.png image.png image.png

在方法定义的内部类中只能访问方法中的final类型的局部变量

相关文章

网友评论

      本文标题:面向对象高级

      本文链接:https://www.haomeiwen.com/subject/sffhuqtx.html