java面向对象
Posted renjiafu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面向对象相关的知识,希望对你有一定的参考价值。
面向对象基础
面向对象编程是一种重要的编程范式,是与面向过程以及函数式编程一同被现代编程语言支持的编程方式
继承
继承用于父类和子类之间,从已有的父类构建子类,可扩展新的属性和方法
- 使用方式
- class 子类 extends 父类
- 优点
- 提高代码复用性
- 加强类之间关联,实现多态
- 注意
- java仅仅支持单继承
- 父类私有的属性和方法均不能被子类继承
- 继承后父子属性和方法的关系
- 不同的属性和方法名子类可直接调用
- 重写后 this调用子类(默认) super调用父类
抽象
抽象用于父类知道子类应当存在但不确定实现的方法
- 使用方式
- 抽象类 abstract class 类名{}
- 抽象方法 public abstract 返回值类型 方法名 (参数)
- 注意
- 抽象类不能直接创建对象
- 只能由子类覆盖所有抽象类的抽象方法,子类才可创建对象,否则仍为抽象类
- 不可与 private final static 共存
接口
接口是功能的集合,接口中全是抽象方法
-
接口的定义
public interface 接口名{ 抽象方法1; ... 抽象方法n; }
-
类实现接口
class 类 implements 接口{ 重写接口方法 }
-
注意
- 接口中的方法均为公共访问的抽象方法
- 接口中无法定义普通的成员变量
抽象和接口的选择
- 优先选用接口,尽量少用抽象类
- 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类
多态
多态是描述事物的多种形态,如小明既是人也是学生
- 定义与使用
父类引用指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
- 普通类多态
父类 变量名 = new 子类 ();
- 抽象类多态
抽象名 变量名 = new 抽象子类();
- 接口多态
接口 变量名 = new 接口实现类 ();
- 注意
- 必须有父子类关系或类实现接口关系
- 必须重写父类或接口类方法
- 父类引用变量指向子类对象
- 父类引用变量调用方法时,会调用子类重写后的方法
- 编译
- 属性编译和运行都是看等号的左边(父类)
- 方法编译看左边(父类),运行看右边(子类)
- 优缺点
- 提高了代码的维护性(由继承保证)
- 提高代码复用性(有继承保证)
- 提高了代码的扩展性:新增加的子类不影响已存在类的多态性、继承性以及其他特性
- 安全性:向上转型将子类类型隐藏了起来
- 只能使用父类共性的内容,无法使用子类特有的功能(如要使用就要使用向下转型强制类型转换)
重写&重载
- 方法重写:子类和父类中方法相同,两个类之间的关系,函数的返回值类型、函数名、参数列表都一样
- 方法重载:指在同一个类中,多个方法名相同,他们的参数列表不同(个数不同,数据类型不同)
匿名对象
只有创建对象的语句,没有把对象地址赋值给某个变量
final & static
final
- final 类:最终的类,不能被继承
- final 变量:相当于一个常量,在编译生成 .class 文件后,该变量变为常量值
- final 方法:最终的方法,子类不能进行重写,但可以继承过来使用
static
- static 修饰的成员,会被所有的对象所共享
- static 修饰的成员,可以通过类名直接调用
注意
- 静态的成员,随着类的加载而加载,优先于对象存在
- 在静态方法中,没有 this 关键字
- 静态方法中,只能调用静态的成员
以上是关于java面向对象的主要内容,如果未能解决你的问题,请参考以下文章