Java 面向对象的三大特性

简介: Java 面向对象的三大特性

面向对象编程有三大特征: 封装、继承和多态。

1.封装

1)封装介绍

封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起数据被保护在内部.程序的其它部分只有通过被授权的操作[方法],才能对数据进行操作。

2)封装的理解和好处

隐藏实现细节 : 方法(连接数据库)<--调用(传入参数.)2)可以对数据进行验证,保证安全合理

Person {name, age}

Person p = new Person();

p.name = "iack";

p.age = 1200;

3)封装的实现步骤(三步)

(1)将属性进行私有化private[不能直接修改属性]

     private int Xxx;

(2)提供一个公共的(public)set方法,用于对属性判断并赋值

   public void setXxx(类型 参数名){//Xxx   表示某个属性

 //加入数据验证的业务逻辑

 属性 = 参数名;

 }

(3)提供一个公共的(public)get方法,用于获取属性的值

       public 数据类型 getXxx(){//权限判断,Xxx 某个属性

          return Xxx;

      }

2.继承

1)继承介绍

继承可以解决代码复用 , 让我们的编程更加靠近人类思维 . 当多个类存在相同的属性 ( 变量 ) 和方法时 , 可以从这些类中抽象出父类, 在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来声明继承父类即可。画出继承的示意图

2)继承的基本语法

class 子类 extends 父类{}

1)子类就会自动拥有父类定义的属性和方法

2)父类又叫 超类,基类

3)子类又叫派生类

3)super基本介绍

super 代表父类的引用,用于访问父类的属性、方法、构造器

(1)访问父类的属性,但不能访问父类的private属性

(2)super.属性名:访问父类的方法,不能访问父类的private方法super.方法名(参数列表):

(3)访问父类的构造器:

(4)super(参数列表);只能放在构造器的第一句,只能出现一句!

super和this的比较

3.多态

1)多态基本介绍

方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。

(1)一个对象的编译类型和运行类型可以不一致

(2)编译类型在定义对象时,就确定了,不能改变

(3)运行类型是可以变化的编译类型看定义时 = 号 的左边,运行类型看 = 号的 右边

比如:

Animal animal = new Dog(); [编译类型是Animal,运行类型Dog]

animal = new Cat();[animal 的运行类型变成了 Cat, 编译类型仍然是 Animal)

2)多态注意事项和细节讨论

多态的 前提是: 两个对象(类)存在继承关系

多态的 向上转型

(1)本质:父类的引用指向了子类的对象

(2) 语法:父类类型 引用名 = new 子类类型();

(3)特点: 编译类型看左边,运行类型看右边。

可以调用父类中的所有成员(需遵守访问权限),

不能调用子类中特有成员;

最终运行效果看子类的具体实现!

多态的 向下转型

(1)语法: 子类类型  引用名  (子类类型)父类引用;

(2)只能强转父类的引用,不能强转父类的对象

(3)要求父类的引用必须指向的是当前目标类型的对象

(4)当向下转型后,可以调用子类类型中所有的成员

3)java的动态绑定机制*

Java 重要特性 : 动态绑定机制

java的动态绑定机制: .

(1)当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定

(2)当调用对象属性时,没有动态绑定机制,哪里声明,那里使用

示例:

public class DynamicBinding {
  public static void main(String[] args) {
    //a的编译类型A 运行类型B
    A a=new B();//向上转型
    System.out.println(a.i);//调用对象属性,输出10
    System.out.println(a.sum());//调用对象方法,输出40
    System.out.println(a.sum1());//调用对象方法,输出30
  }
}
class A{//父类
  public int i=10;
  //动态绑定机制
  public int sum(){//父类sum()
    return getI()+10;//
  }
  public int sum1(){//父类sum1()
    return i+10;//
  }
  private int getI() {
    return i;
  }
}
class B extends A{//子类
  public int i=20;
  //动态绑定机制
  public int sum1(){
    return i+10;//
  }
  public int sum(){
    return getI()+20;//
  }
  private int getI() {//子类getI()
    return i;
  }
}

 

目录
相关文章
|
8月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
8月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
220 1
|
8月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
325 0
Java API 开发者
273 0
|
9月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
10月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
161 0
|
10月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
443 1
|
10月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
938 1
|
10月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
472 0
|
10月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
424 1