Java 面向对象核心三大特性:封装、继承、多态(OOP),这是 Java 进阶的核心基础

【Java笔记】第8章:面向对象的三大特性(封装、继承、多态) 各位小伙伴大家好!上期小编给大家讲解了Java中的面向对象,接下来讲讲Java中面向对象的三大特性!Java中面向对象的三大特性是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。这些特性是Java编程语言中实现面向对象编程(OOP)的核心概念。封装(Encapsulation)封装是指将数据(属性)和操作数据的方法(行为)封装在一起,形成一个不可分割的整体。在Java中,封装通过访问修饰符(如publicprivateprotected和。 阅读详情

1. 封装(Encapsulation)

封装是 将数据(属性)和操作数据的方法(行为)包装在类内部,并通过访问控制来保护数据。

1.1 基本做法

  • 将成员变量声明为 private(私有化)

  • 提供 public 的 getter/setter 方法访问变量

public class Person {
    private String name; // 私有属性
    private int age;

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter
    public String getName() {
        return name;
    }

    // Setter
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age >= 0) {      // 数据校验
            this.age = age;
        }
    }
}

✅ 优点

  • 控制属性访问权限,避免外部直接修改

  • 可在 setter 中增加校验逻辑

  • 提高代码可维护性和安全性


2. 继承(Inheritance)

继承是 子类继承父类的属性和方法,实现代码复用和层次结构。

2.1 基本语法

class Animal {
    String name;
    public void eat() {
        System.out.println(name + " 在吃");
    }
}

// Dog 继承 Animal
class Dog extends Animal {
    public void bark() {
        System.out.println(name + " 在叫");
    }
}

2.2 使用示例

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "旺财";
        dog.eat();   // 调用父类方法
        dog.bark();  // 调用子类方法
    }
}

2.3 注意点

  • Java 支持单继承(一个子类只能继承一个父类)

  • 可使用 super 调用父类构造方法或方法

  • 子类继承父类后可直接访问 public 和 protected 成员,但不能访问 private

class Dog extends Animal {
    public Dog(String name) {
        super.name = name; // 调用父类属性
    }
}


3. 多态(Polymorphism)

多态是 同一操作在不同对象上表现出不同行为。

3.1 方法重写(Override)实现多态

class Animal {
    public void makeSound() {
        System.out.println("动物叫");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵");
    }
}

3.2 父类引用指向子类对象

public class Main {
    public static void main(String[] args) {
        Animal a1 = new Dog(); // 父类引用指向子类对象
        Animal a2 = new Cat();

        a1.makeSound(); // 汪汪汪
        a2.makeSound(); // 喵喵喵
    }
}

✅ 关键点

  • 编译时:父类类型决定可调用的方法(方法签名)

  • 运行时:实际对象类型决定方法具体实现(动态绑定)

3.3 多态优点

  • 提高代码扩展性(增加新子类无需修改调用代码)

  • 接口和方法调用更通用,易于维护


4. 小结

特性作用实现方法
封装保护数据,隐藏实现细节private + getter/setter
继承提高代码复用,形成类层次extends 关键字
多态同一接口,不同表现方法重写 + 父类引用指向子类对象
面向对象三大特性:封装、继承、多态深度解析 OOP。 阅读详情

相关推荐

Python 面向对象三大特性:封装、继承与多态的深度解析

在 Python 中,可使用abc模块定义抽象基类和抽象方法,来规范子类必须实现的接口,进一步强化多态的约束性。passprint(f"使用信用卡支付 {amount} 元")print(f"使用支付宝支付 {amount} 元")Payment作为抽象基类,定义了抽象方法pay,子类CreditCardPayment和AlipayPayment必须实现pay方法,确保了在支付功能接口上的统一,体现了多态的规范与灵活性。

srlsong的博客 1421

【Java基础入门教程面向对象编程与核心语法详解】

示例:设计`Animal`类作为基类,`Dog`和`Cat`继承`Animal`并添加其特有的属性(如`dog.setBark()`)。示例:定义`Shape`基类的`getArea()`方法,`Circle`和`Rectangle`子类各自实现独立的面积计算逻辑。通过`extends`关键字建立父子类关系,子类自动获得父类(不包括私有成员)的所有属性和方法,实现代码复用和类型层次关系。特殊点:`boolean`仅保存`true/false`,`String`是特殊对象类型而非原始类型。

bPngtVwc的博客 435

【基础】第八篇 Java 面向对象三大特性详解:封装、继承与多态

本文深入解析Java面向对象编程的三大特性:封装、继承与多态。封装通过访问控制保护数据安全,提供getter/setter方法实现安全访问;继承使用extends关键字实现代码复用和功能扩展,遵循单继承规则;多态通过方法重写和向上转型实现同一接口的不同行为表现。三者协同工作:封装是基础,继承形成层次结构,多态提升灵活性。文章通过代码示例和对比表格,清晰展示了三大特性的实现方式、核心作用及相互关系,为理解Java面向对象编程提供了系统性的指导。

入坑太深起不来 1384

Java面向对象三大特性(封装、继承、多态)

文章目录前言一、封装1.封装的概念2.private实现封装3.getter和setter方法4.封装的好处二、继承1.extends实现继承2.super 关键字三,多态总结 前言 OOP 语言:也就是面向对象编程。 面向对象的语言有三大特性:封装、继承、多态。三大特性是面向对象编程的核心。下面就来介绍一下面向对象的三大特性。 如果想了解面向对象可以看一下这一篇博客类和对象 一、封装 1.封装的概念 在我们写代码的时候经常会涉及两种角色: 类的实现者和类的调用者 封装的本质就是让类的调用者不必太多的.

爱敲代码的三毛的博客 1万+

【Java 基础】-- Java 的三大特性:封装、继承和多态

理解并掌握这三大特性,可以帮助开发者编写出更清晰、模块化和高效的 Java 代码。如果你有任何问题或见解,欢迎留言讨论!这三大特性是 Java 代码可维护性、可扩展性和重用性的关键。本文将详细介绍这三大特性,并提供示例代码帮助理解。Java 作为一门面向对象的编程语言(OOP),其核心特性包括。,从而实现代码复用的机制。在 Java 中,封装通常通过。关键字访问父类的属性和方法。在 Java 中,继承通过。Java 的三大特性——是面向对象编程的核心。

欢迎来到我的博客,一起探索代码里的世界! 1427

【Python】新手入门:python面向对象编程的三大特性是什么?python继承、封装、多态的特性都有哪些?

Python作为面向对象编程语言,其核心特性包括继承、封装和多态。继承允许子类复用父类功能并扩展新特性,通过方法重写实现差异化。封装通过双下划线前缀隐藏内部细节,虽可强制访问但遵循约定保护数据安全。多态则基于动态类型特性,同一方法在不同子类中呈现不同行为,提升代码灵活性。三者协同构建高内聚低耦合的代码结构,既简化开发又增强可维护性。初学者可通过实践案例理解语法变形、方法重写等机制,结合工具调试逐步掌握面向对象编程精髓。

专注Python编程与网络安全领域,分享原创技术文章与靶机渗透实战经验。以清晰的逻辑解构复杂技术,用深入浅出的笔触呈现:从Python基础到高级特性,从漏洞原理到攻防实践。在这里,代码与安全交织,思考与成长同行。 833

【Java】面向对象的三大特征:封装、继承、多态

本章详细解析了Java面向对象编程中的三大特性:封装、继承、多态

yican2580的博客 3412

OOP的三大特性:封装、继承、多态

​​1. 核心概念​​​​2. 示例​​ java 复制 public class Person {     // 私有属性,外部无法直接访问     private String name;     private int age;     // 公共方法:提供对属性的受控访问     public String getName() {         return

zjw541806的博客 702

面向对象编程(OOP) 的三大特性:封装、继承与多态

本文深入解析面向对象编程(OOP)三大核心特性:封装通过private属性和public方法实现数据保护与简化调用;继承通过extends建立类层级关系实现代码复用;多态通过接口实现和方法重写支持运行时动态绑定。文章通过银行账户、动物继承体系等Java示例阐明各特性的实现方式与应用场景,强调避免过度继承、遵循最小接口等最佳实践,并指出掌握这些特性是进阶高级Java开发的基础。最后建议结合设计模式和框架进一步深化OOP实践。

喜欢吃Java炒饭QAQ 1569

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1490

Anaconda+清华源加速PyTorch GPU环境安装与CUDA版本匹配指南

深度学习环境管理常面临依赖冲突与下载缓慢问题,通过虚拟环境隔离与镜像源加速可显著提升效率。Anaconda利用conda机制创建独立Python环境,避免包版本冲突;清华源通过国内镜像同步大幅提高下载速度。GPU版PyTorch安装需严格匹配CUDA、cuDNN与显卡驱动版本,否则易出现CUDA不可用错误。该方案适用于图像分割、目标检测等需多版本PyTorch并存的场景,能快速搭建稳定GPU训练环境。本文详解Anaconda安装、清华源配置及PyTorch GPU版安装全流程。

weixin_30522983的博客 235

Java 面向对象三大特性详解:封装、继承与多态,掌握OOP核心思想

本文深入解析Java面向对象编程的三大核心特性:封装、继承和多态。封装通过隐藏对象细节和保护数据安全;继承实现代码复用和类层次构建;多态允许同一接口多种实现,提高扩展性。文章结合代码示例,详细讲解各特性的原理、应用场景及最佳实践,包括封装的数据保护、继承的类层次构造、多态的动态绑定机制,以及三者在支付系统等实际案例中的协同应用。同时提供了常见错误规避和开发建议,帮助读者掌握写出结构清晰、易维护的Java代码的技巧。

weixin_73962764的博客 1104

从零开始:YOLOv8车牌检测模型训练全流程实战

本文详细介绍了从零开始训练YOLOv8车牌检测模型的全流程实战指南。内容涵盖环境搭建、数据集收集与标注、模型配置与训练、评估测试及高级优化技巧。通过使用预训练模型和迁移学习,开发者可以高效构建精准的车牌检测系统,并掌握模型导出与部署的关键步骤。

weixin_29061041的博客 335

面向对象三大特性:封装、继承、多态

封装是基础,保障数据安全与模块独立;继承实现代码复用与层次化设计;多态通过动态绑定提升代码灵活性。三者协同作用,使得Java程序既高效又易于扩展。例如,一个游戏角色系统通过封装保护属性、继承复用代码、多态实现多样攻击行为,充分体现了三大特性的价值。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章深入理解Java三大特性:封装、继承和多态面向对象三大特性:封装、继承、多态(最全面最详细的解释)

ning的博客 2003

RK平台MPP编解码实战:从源码编译到性能测试全解析

本文详细解析了在RK(瑞芯微)平台上进行MPP(Media Process Platform)多媒体编解码实战的全过程。从源码获取、交叉编译环境搭建、常见编译问题排查,到测试程序的修改调试与性能测试分析,提供了从零到一的完整指南。文章通过实测数据展示了MPP硬件编解码在嵌入式设备上的高性能与低功耗优势,帮助开发者快速掌握这一关键技术,应用于智能摄像头、视频会议终端等产品开发。

weixin_28273593的博客 544

openstack卷分离异常问题处理

对于 2023-05-10 之后的所有 OpenStack 版本,需要将Nova 配置为向 Cinder 发送服务令牌,然后 Cinder 接收该令牌。cinder.conf处添加service_token_role配置。1.修改nova的config文件添加如下配置。确定service role 是否存在。有关详细信息,请参阅。重启nova cinder 服务。nova-compute日志。cinder-api日志。

weixin_43391291的博客 477

Java面向对象程序三大特性:封装、继承、多态

通过合理地运用这三大特性,开发者能够将复杂的问题分解为更小的、易于管理的单位,大大提升了软件开发的效率和质量。封装是面向对象程序设计的基础,指的是将对象的状态和行为封装在一起,并对外提供访问接口。在该示例中,Manager类继承自Employee类,拥有Employee类的所有属性和方法,并能够重写work()方法来实现自己的行为。简化接口:通过封装,用户只需关注对象提供的接口,而不必关心其具体实现,降低了程序的复杂性。3.多态性:通过继承支持多态特性,使得同一接口可以有不同的实现,增强了系统的灵活性。

XHgga_的博客 1197

【C++PTA】6-1 Point类的运算 (10 分)

定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。 函数接口定义: 实现Point类。 裁判测试程序样例: /* 请在这里填写答案 */ int main(int argc, char const *argv[]) { P

libertye的博客 2367

面向对象编程(OOP):什么是面向对象编程?三大特性继承、多态、封装如何实现?

面向对象编程(OOP):什么是面向对象编程?三大特性继承、多态、封装如何实现 🚀 摘要 “猫哥,我刚学Java,听说面向对象编程有三大特性,怎么理解?” 今天,猫头虎带你全面解析面向对象编程(OOP): 什么是OOP?🚀 三大特性:封装、继承、多态如何实现? 代码实战+详细注释,轻松入门OOP!💡 面向对象编程是现代编程的核心思想,掌握它将让你代码更清晰、更易维护!

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 2641

YOLOv11 Neck架构演进 - 从FPN/PAN到C2f/SPPF的融合策略实战剖析

本文深入剖析YOLOv11 Neck架构的演进历程,从FPN/PAN到C2f/SPPF的融合策略,详细解析了多尺度目标检测中的特征融合技术。通过实战案例展示了YOLOv11在无人机航拍等场景中的性能提升,特别是小目标检测AP值提升15%的显著效果,为计算机视觉开发者提供了宝贵的架构优化经验。

weixin_30500105的博客 433

零代码实战:基于Coze平台打造测试用例生成AI助手

本文详细介绍了如何利用Coze平台零代码打造测试用例生成AI助手,通过智能体和工作流配置,实现需求文档自动解析与结构化测试用例生成。该方案显著提升测试效率,特别适合敏捷开发中频繁变更的需求场景,帮助测试工程师快速应对挑战。

weixin_42526015的博客 209

Java核心技术【十四】深入讲解Java的三大特性:封装、继承与多态

在面向对象编程(OOP)中,封装、继承和多态是三大核心概念。这些概念在Java编程语言中得到了充分的体现和应用。本文将通过理论结合示例代码的方式,深入讲解这三个概念在Java中的实现和应用。

技术管理修行 906

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

什么是面向对象OOP(面向对象的三大特性)

什么是面向对象(面向对象的三大特性) 简介 学java的都知道,java语言有三个特性,也可以说是三个优点,就是 1.简单性: java语言相对于C语言,C++来说比较简单。 2.跨平台:java语言编写的代码可以在不同的操作系统运行,即windows、android 、ios、linux等等,也是软件、计算机硬件和软件的桥梁、可以调用硬件资源。 3.纯面向对象:这个就是今天要记录的重点,编程语言...

光头强的博客 6230

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

面向对象编程三大特性:封装、继承、多态的核心要义

本文系统梳理Java面向对象编程的三大核心特性:封装隐藏实现细节并提供安全接口;继承复用代码并理清类层次关系;多态实现同一接口的多种行为(编译时与运行时)。通过精讲核心要义、实战代码示例与常见误区解析,助你真正掌握OOP思想本质。

qq_17862337的博客 1265

Java面向对象三大特性:封装、继承与多态的深度解析及实战

封装(Encapsulation)是指将对象的属性(成员变量)和行为(成员方法)捆绑在一起,隐藏对象内部的实现细节,仅通过公开的接口(public方法)与外部进行交互,禁止外部直接访问对象的私有属性。其核心目标是“数据隐藏”与“权限控制”,避免外部操作对对象内部状态造成非法修改,同时降低代码的耦合度。形象地说,封装就像一个密封的盒子:盒子内部的结构(属性)和运作方式(方法)对外隐藏,外部只能通过盒子预留的按钮(公开接口)操作盒子,无法直接触碰内部零件,既保证了内部安全,也简化了外部使用方式。

qq_43402143的博客 1235
上一篇: uni-app开发微信小程序全流程指南
下一篇: elementplus组件库 alert提示组件 type=“primary“无法使用 告警
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空下的DeppBing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值