面向对象的特征有哪些方面?怎么理解?

面向对象的特征有哪些方面?怎么理解?

        答:面向对象的三大特征:1.继承  2.封装 3.多态性

1)继承:就是保留父类的属性,开扩新的东西。通过子类可以实现继承,子类继承父类的所有状态和行为,同时添加自身的状态和行为。

2)封装:就是类的私有化。将代码及处理数据绑定在一起的一种编程机制,该机制保证程序和数据不受外部干扰。

3)多态:是允许将父对象设置成为和一个和多个它的子对象相等的技术。包括重载和重写。重载为编译时多态,重写是运行时多态。

重载覆盖

Overloading:重载(两个或者多个函数在同一类中,名一样,参数列表不一样)。

        或者说:方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载.

注意:仅仅是返回值不同的两个函数,不叫重载,是错误的。


方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现.


Overriding(重写)=覆盖:在父类有个函数,在子类也又有一个同样名字的函数,而且在子类内中把这个功能做的跟具体化。


如果你是湖南的 欢迎加入 湖南人在深圳-Java群:557651502


  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、面向对象特征哪些方面? 答:面向对象特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, 包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为, 并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。 提供继承信息的类被称为父类(超类、基类); 得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续 性, 同时继承也是封装程序中可变因素的重要手段 (如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模 式的部分)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来, 对数据的访问只能通过已定义的接口。面向对象的本质就是 将现实世界描绘成一系列完全自治、封闭的对象。 我们在类中编写的方法就是对实现细节的一种封装; 我们编写一个类就是对数据和数据操作的封装。 可以说,封装就是隐藏一切可隐藏的东西, 只向外界提供最简单的编程接口 (可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作 起来更简单; 我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事 情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。 简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。 多态性分为编译时的多态性和运行时的多态性。 总共90多道题目,包含面向对象、算法、多线程等面试题及详解 大厂面试题集,纯人工手写,分享不易,有问题敬请谅解 。。。。。。。。
定义类 •定义类的语法格式: •[修饰符] class 类名 {….类体…..} •类体可以由多个属性、方法、构造器组成。 •注意:类的修饰符可以是public、final 或省略这两个。类名只要是合法的标识符. •一个类里可以包含三种最常见的成员:构造器、属性、方法。 定义属性的格式语法 •[修饰符] 属性类型 属性名 [= 默认值]; 定义方法的格式语法 •[修饰符] 方法返回值类型 方法名(形参列表) {….方法体….} – 方法中的修饰符可以是public ,protected,private,static,final,abstract,其中访问控制符只能出现一 个,abstract ,final 只能出现其一. –返回值类型可以是基本类型和引用类型,如果无返回值,要用void 来声明 –形参列表,可以由零到多组组成,参数之间用逗号(“,”)隔开. –static 是一个特殊的关键字,译为”静态”,所有有static 修饰的叫类属性,类方法,类成员. 定义构造器的语法格式 •[修饰符] 构造器名(形参列表) {……} –修饰符可以是public protected private 构造器必须和类名相同,形参和方法的形参一样. 对象的产生和使用 •创建对象的根本途径就是构造器,所以创建对象通过关键字new 加上对应的构造器即可. •如果访问权限允许,类里定义的属性和方法可以通过类或实例来调用, •有static 修饰的访求和属性,既可通过类来调用,也可以通过实例来调用. 对象.引用和指针 •Person p = new Person();,这行代码创建了一个Person 实例,也被称为对象,这个对象被赋给了p变量. •也就是说引用型变量里存放的仅仅是一个引用,它指向实际的对象. 对象的this 引用 •this 关键字总是指向调用该方法的对象.   –1.构造器中引用该构造器执行初始化的对象   –2.在方法中引用调用该方法的对象 •在方法里的this 指谁调用就指谁 •注: this 不能用在有static 修饰的方法中. 方法的详解 •方法的所属性   –一旦将一个方法定义在一个类里,如果用static 修饰了,这个方法属于这个类,否则属于这个类的对象.   –方法不能独立执行,必须要有调用者.(如:类.方法、对象.方法)   –方法不能独立定义,只能定义在类里.   –方法要么属于一个类,要么属于一个对象 方法的参数传递机制 传递方式只有一种:值传递. 形参长度可变的方法 •如果在定义方法时,在最后一个参数的类型后增加三点…,则表明该形参接受多个参数值,多个参数值被当成数组传   入. •长度可变的形参只能位于最后一个参数,并一个方法里只能有一个可变长度的参数. 递归 •递归就是在方法中再次调用自己。 •递归一定要向已知方向递归. 方法的重载 •Java 允许在一个类里定义多个同名方法,只要形参列表不同即可. •所以方法的重载只要满足两个条件(两同一不同):1.同一个类中,方法名相同;2.形参不同。和返回值类型无关.   所以在调用这些方法时要传入不同的参数值. 成员变量和局部变量 •成员变量指的是在类范围里定义的变量;局部变量指的是在一个方法内定义的变量。 •不管是成员变量还是局部变量都遵守相同的命名规则。 •成员变量分为类属性和实例属性.对于类属性无论通过类还是对象来访问都是访问同一个对象,只要一个对象改变 了类属性,那么其他对象对应的类属性也改变了.成员变量不用显式初始化,只要定义了一个类属性或实例属性,系统 默认进行初始化。 局部变量 •局部变量可分为三种:   –形参   –方法局部变量   –代码块局部变量. •与成员变量不同的是除了形参外,其他局部变量都必须显式地初始化, •Java 里允许局部变量和成员变量重名。这样局部变量会覆盖成员变量,这时通过this 来调用实例的属性. 成员变量的初始化 •当类被加载时,类成员就在内存中分配了一块空间。 •当对象被创建时,实例成员就在内存中分配了内存空间。 •实例变量与实例共存亡;类变量与类本身共存亡。 局部变量的运行机制 •局部变量仅在方法内有效。 •当方法执行完成时,局部变量便会自动销毁。 封装 •理解封装:封装是面向对象的三大特征之一。 • 封装包含两方面含义:   –合理隐藏。   –合理暴露。 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pipi-changing/ 使用访问控制符 •private 私有的。在同一个类里能被访问。 •default 默认的。包访问权限 •protected 受保护的。子类中也能访问 •public 公共的。在任何地方都可以访问 package 和 import •package 打包格式:package 包名;放在程序开始的顶端。 •包机制的两个方面的保证。1.源文件里要使用package 语句指定包。2.class 文件必须放在对应的路径下。 •import 引入包格式。分为两种:   –非静态导入,导入的是包下所有的类。如:import package.subpackage.*;   –静态导入,导入的是类的静态属性。如:import static package.className.*; Java 的常用包 •java.lang.*, •java.util.*, •java.net.* , •java.io.*, •java.text.*, •java.sql.*, •java.awt.*, •java.swing.*. 使用构造器执行初始化 •构造器最大的用处就是在创建对象时执行初始化,系统会默认的进行初始化。 •如果程序员没有Java 类提供任何构造器,则系统会为这个类提供一个无参的构造器。 •一旦程序员提供了自定义的构造器,遇系统不再提供默认的构造器。 构造器的重载 •构造器的重载和方法的重载一样,都是方法名相同,形参列表不相同。 •在构造器中可通过this来调用另外一个重载的构造器。 继承的特点 •Java通过关键字extends来实现,实现继承的类称为子类,被继承的类称为基类、超类、父类。父类是大类,子   类是小类。 •Java的继承是单继承,每个子类最多只有一个直接父类。 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pipi-changing/ 继承 •子类继承父类的语法格式如下: •修饰符 class subclass extends superclass {。。。。。。} •子类扩展了父类,将可以获得父类的全部属性和方法,但不能获得父类构造器 •Java里的继承都是单继承,也就是只能有一个直接的父类,可以有n个间接父类。 重写父类的方法 •方法的重写要遵循“两同两小一大” 指的是:方法名相同,形参列表相同。返回值类型更小或相同,抛出的异常更   小或相同,访问控制权限要更大。 父类实例的super限定 •通过关键字super 来调用父类的方法或属性。 super调用父类的构造器 •子类构造器总会调用父类构造器。 •如果子类构造器没有显式使用super调用父类构造器;子类构造器默认会调用父类无参数的构造器。 •创建一个子类实例时,总会先调用最顶层父类的构造器。 多态性 •Java 引用变量有两个类型:一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类   型决定,运行时的类型由实际赋给该变量的对象决定。 •如果编译时类型和支行时的类型不一致,这就有可能出现所谓的多态。 •两个相同类型的引用变量,由于它们实际引用的对象的类型不同,当它们调用同名方式时,可能呈现出多种行为   特征,这就是多态。 引用变量的类型转换 •将一个子类对像赋给父类,这就是向上转型。向上转型是自动的。 •强制类型转换: 类型转换运算符是小括号,语法如下(type)variable; instanceof运算符 •前一个操作通常是一个引用类型的变量,后一个操作通常是一个类(也可以是接   口)。如果是 返回true, 否返回false。 继承和组合 •使用继承的注意点 •利用组合实现复用:总之,继承要表达的是一种“是(is-a)”的关系,而组合表达的是”有(has-a)“的关系。 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pipi-changing/ 初始化块 •使用初始化块:初始化块由大括号括起{…},只能由static修饰。 •初始化块和构造器:初始化块总在构造器之前执行,初始化块不能接受形参。 静态初始化块 •用static修饰的初始化块为静态初始化块,由于是静态的,所以是属于类,当类加载时,就执行静态初始化块 ,   但执行一个子类时,最先执行其最顶层父类的静态初始化, •初始化块是属于实例 的。只要创建一次对象,初始化块就执行一次。 下面贴出代码: Dog DogTest Person PersonTest ReturnThis StaticAccessNonStatic ThisInConstructor Overload OverloadVarargs PrimitiveTransferTest Recursive ReferenceTransferTest Varargs 复制代码 public class BlockTest { public static void main(String[] args) { { // 定义一个代码块局部变量a int a; // 下面代码将出现错误,因为a变量还未初始化 // System.out.println("代码块局部变量a的值:" + a); // 为a变量赋初始值,也就是进行初始化 a = 5; System.out.println("代码块局部变量a的值:" + a); } // 下面试图访问的a变量并不存在 // System.out.println(a); } // 代码块局部变量a的值:5 } 复制代码 。。。。。。。。。。。。。。。。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值