java面向对象

Posted renjiafu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面向对象相关的知识,希望对你有一定的参考价值。

面向对象基础

面向对象编程是一种重要的编程范式,是与面向过程以及函数式编程一同被现代编程语言支持的编程方式

继承

继承用于父类和子类之间,从已有的父类构建子类,可扩展新的属性和方法

  1. 使用方式
  • class 子类 extends 父类
  1. 优点
  • 提高代码复用性
  • 加强类之间关联,实现多态
  1. 注意
  • java仅仅支持单继承
  • 父类私有的属性和方法均不能被子类继承
  1. 继承后父子属性和方法的关系
  • 不同的属性和方法名子类可直接调用
  • 重写后 this调用子类(默认) super调用父类

抽象

抽象用于父类知道子类应当存在但不确定实现的方法

  1. 使用方式
  • 抽象类 abstract class 类名{}
  • 抽象方法 public abstract 返回值类型 方法名 (参数)
  1. 注意
  • 抽象类不能直接创建对象
  • 只能由子类覆盖所有抽象类的抽象方法,子类才可创建对象,否则仍为抽象类
  • 不可与 private final static 共存

接口

接口是功能的集合,接口中全是抽象方法

  1. 接口的定义

    public interface 接口名{
        抽象方法1;
        ...
        抽象方法n;
    }
    
  2. 类实现接口

    class 类 implements 接口{
        重写接口方法
    }
    
  3. 注意

  • 接口中的方法均为公共访问的抽象方法
  • 接口中无法定义普通的成员变量

抽象和接口的选择

  • 优先选用接口,尽量少用抽象类
  • 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类

多态

多态是描述事物的多种形态,如小明既是人也是学生

  1. 定义与使用
    父类引用指向子类对象
    父类类型 变量名 = new 子类类型();
    变量名.方法名();
  • 普通类多态
    父类 变量名 = new 子类 ();
  • 抽象类多态
    抽象名 变量名 = new 抽象子类();
  • 接口多态
    接口 变量名 = new 接口实现类 ();
  1. 注意
  • 必须有父子类关系或类实现接口关系
  • 必须重写父类或接口类方法
  • 父类引用变量指向子类对象
  • 父类引用变量调用方法时,会调用子类重写后的方法
  1. 编译
  • 属性编译和运行都是看等号的左边(父类)
  • 方法编译看左边(父类),运行看右边(子类)
  1. 优缺点
  • 提高了代码的维护性(由继承保证)
  • 提高代码复用性(有继承保证)
  • 提高了代码的扩展性:新增加的子类不影响已存在类的多态性、继承性以及其他特性
  • 安全性:向上转型将子类类型隐藏了起来
  • 只能使用父类共性的内容,无法使用子类特有的功能(如要使用就要使用向下转型强制类型转换)

重写&重载

  • 方法重写:子类和父类中方法相同,两个类之间的关系,函数的返回值类型、函数名、参数列表都一样
  • 方法重载:指在同一个类中,多个方法名相同,他们的参数列表不同(个数不同,数据类型不同)

匿名对象

只有创建对象的语句,没有把对象地址赋值给某个变量

final & static

final

  • final 类:最终的类,不能被继承
  • final 变量:相当于一个常量,在编译生成 .class 文件后,该变量变为常量值
  • final 方法:最终的方法,子类不能进行重写,但可以继承过来使用

static

  1. static 修饰的成员,会被所有的对象所共享
  2. static 修饰的成员,可以通过类名直接调用

注意

  • 静态的成员,随着类的加载而加载,优先于对象存在
  • 在静态方法中,没有 this 关键字
  • 静态方法中,只能调用静态的成员






以上是关于java面向对象的主要内容,如果未能解决你的问题,请参考以下文章

Java中面向对象的三大特性之封装

JAVA方法的定义

java 为啥要实现 function?

Java 封装

Java 封装

Java 封装