第十二周 5.20 面向对象的三大特性(封装、继承、多态)(一)

2024-05-28 15:28

本文主要是介绍第十二周 5.20 面向对象的三大特性(封装、继承、多态)(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、封装
1.目前的程序无法保证数据的安全性、容易造成业务数据的错误
2.private:私有的,被private修饰的内容只能在本类中访问
3.为私有化的属性提供公开的get和set方法
        (1)get方法,获取私有化属性的值:

                public 返回值类型 get属性名(){
                        return 属性名;

                }
                注意:返回值类型取决于获取属性的类型方法名:get+属性名首字母大写
        (2)set方法,为私有化属性赋值:

                public void set属性名(数据类型 变量名){
                        this.属性名=变量名

                }
                注意:()中的数据类型取决于属性类型方法名:set+属性名首字母大写

二、继承

碳素笔     是一种        笔

  杯          是一种       容器
  狗          是一种       动物
   A            is  a            B
如果 A  is-a  B 关系成立,A和B 之间具有继承关系
  A - 子类   继承     B-父类
                extends

1.理解:
        (1)继承体现的是类之间的一种“is-a”关系
A           is       a            B
子类                                 父类
子类                                 父类

                 继承
                extends
        (2)语法:
                class 子类类名     extends 父类类名{}
        (3)通过继承关系,子类型可以直接使用父类中定义的属性和方法
2.继承体现了程序的复用性和可扩展性

3.方法的覆盖【也被称为方法的重写-override】
        (1)方法的覆盖:子类中定义和父类中相同的方法

        (2)方法的覆盖要求:
                a.子类的方法名、形参列表、返回值类型必须和父类一致
                b.子类的访问修饰符,和父类相同或是比父类更众
        (3)如果子类覆盖了父类中方法,则优先使用子类覆盖后的
        (4)注意:如果子类定义了和父类方法名、形参列表相同,但是返回值类型不同的方法,则编译报错

        (5)如果子类定义了和父类方法名相同、形参列表不同的方法,则编译通过,运行也ok,这构成了方法的重载
4.Java中继承特点

       (1)一个父类可以有多个直接的子类

                class Animal{}

                class Dog extends Animal{}
                class cat extends Animal{}
        (2)一个子类只能有一个直接的父类,但是可以有多个间接的父类(多级继承),java中的类之间是单继承

5.java中的访问修饰符:
        (1)访问修饰符代表一种访问权限

        (2)java中有4个访问修饰符:

                private:私有的

                default:默认的

                protected:受保护的

                public:公开的
        (3)访问修饰符的访问权限:

                          本类                   同包                       非同包的子类

其他

private                ok
default                ok                        ok
protected            ok                        ok
public                  ok                        ok                                ok

        (4)访问修饰符修饰内容的继承性:
                private 修饰的属性和方法,不能被继承
                default 修饰的属性和方法,同包子类允许继承
                protected 修饰的属性和方法,同包+非同包子类继承
                public 修饰的属性和方法,所有子类都可以继承

6.super的应用:

        (1)第一种用法:super.
                a.super.引用在子类的方法中,代表访问父类中属性或是成员方法
                b.super.属性名

                        super.成员方法名(实参);
        (2)第二种用法:super()
                a.创建子类对象时,jvm默认创建一个父类对象,而且默认使用父类中无参数的构造方法完成父类对象的创建
                b.super()/super(实参):应用在子类的构造方法的第一行有效语句中,代表创建子类对象时,告知jvm完成父类对象创建时采用哪一个构造方法完成对象的创建
                c:如果子类的构造方法第一行没有指定super()/super(实参),则默认添加super()

这篇关于第十二周 5.20 面向对象的三大特性(封装、继承、多态)(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010952

相关文章

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

哈希表的封装和位图

文章目录 2 封装2.1 基础框架2.2 迭代器(1)2.3 迭代器(2) 3. 位图3.1 问题引入3.2 左移和右移?3.3 位图的实现3.4 位图的题目3.5 位图的应用 2 封装 2.1 基础框架 文章 有了前面map和set封装的经验,容易写出下面的代码 // UnorderedSet.h#pragma once#include "HashTable.h"

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'