多态性

多态性

末鹿安然 提交于 2020-01-26 19:55:37
多态分类:   普通类多态 (静态方法没有多态性 ,成员变量没有多态性) 1 package review07; 2 /* 3 * 多态的分类: 4 * 普通类多态(静态方法没有多态性 ,成员变量没有多态性) 5 * 抽象类多态(抽象父类的变量不能调用子类中特有的方法) 6 * 接口多态 7 * 8 * 多态的前提 9 * 继承 10 * 方法重写 11 * 父类引用指向子类对象 12 * 编译时类型:引用数据类型定义时的类型就是编译时类型 13 * 运行时类型:程序运行时变量指向的正真对象的类型 14 */ 15 //普通类多态 16 class Father4 { 17 int num = 10; 18 public void show(){ 19 System.out.println("Father showw"); 20 } 21 public static void method(){ 22 System.out.println("Father method"); 23 } 24 25 26 } 27 class Son4 extends Father4{ 28 int num =20; 29 public void show(){ 30 System.out.println("Son4 show"); 31 } 32 public void show1(){ 33

Java面试题30——面向对象特征之多态

前提是你 提交于 2020-01-24 09:46:08
面向对象特征——多态 多态有两种描述方式,一种是方法的多态性、一种是对象的多态性。多态是发生在编译期间的。 一、方法的多态性: ① 方法的重载:同一个方法名称,会根据传入参数的类型及个数不同执行不同的方法体; ② 方法的覆写: 同一个方法,会根据子类的不同,实现不同的功能。也就是继承了父类的多个子类对父类方法的重写,导致了方法的多态性。 二、对象的多态性(指的是发生在继承关系之中,子类和父类之间转换问题) 父类对象——子类实例: ① 向上转型(自动完成):父类 父类对象 = 子类实例 <new 实现> 子类对象——父类实例: ② 向下转型(强制完成):子类 子类对象 = (子类)父类实例 <new 实现> 下面看一个实例,让我们加深对多态的理解!! class A { public void m(A a) { System.out.println("AA"); } public void m(D d) { System.out.println("AD"); } } class B extends A { @Override public void m(A a) { System.out.println("BA"); } public void m(B b) { System.out.println("BD"); } public static void main(String[]

程序员面试之葵花宝典

梦想的初衷 提交于 2020-01-17 01:02:38
面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题,而6. 只是选择其中的一部分,7. 暂时不8. 用部分细节。抽象包括两个方面,9. 一是过程抽象,10. 二是数据抽象。 11. 继承:继承是一种联结类的层次模型,12. 并且允许和鼓励类的重用,13. 它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,14. 这个过程称为类继承。新类继承了原始类的特性,15. 新类称为原始类的派生类(子类),而16. 原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,17. 并且类可以修改或增加新的方法使之更适合特殊的需要。 18. 封装:封装是把过程和数据包围起来,19. 对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,20. 即现实世界可以被描绘成一系列完全自治、封装的对象,21. 这些对象通过一个受保护的接口访问其他对象。 22. 多态性:多态性是指23. 允许不同24. 类的对象对同25. 一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,26. 很好的解决了应用程序函数同27. 名28. 问题。 2、String是最基本的数据类型吗?

常见J2EE面试题汇总2

落花浮王杯 提交于 2020-01-17 00:39:07
39 ,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 40 ,启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 41 ,构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 42 ,是否可以继承String类? String 类是final类故不可以继承。 43 ,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 44 ,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 会执行,在return前执行。 45 ,编程题: 用最有效率的方法算出2乘以8等於几?

Java_7面向对象的三大特征

做~自己de王妃 提交于 2020-01-15 16:48:37
一、封装(模块化) 1.问题的引入: 当我们创建一个类的对象后,可以通过对象.属性的方式,对对象进行赋值。 这里,赋值操作受到属性的数据类型和存储范围的制约,除次之外,没有其他制约条件。 但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件,这个条件又不能在属性声明时体现 ,我们只能通过一个public 方法对属性进行限制条件的添加(get(),set()) 同时,我们需要避免用户再使用“对象.属性”进行赋值,则需要将属性声明为私有化。 --》此时,针对属性就体现了封装。 2.封装的思想 (1)类的内部数据操作细节自己完成,不允许外部干涉。仅对外暴露少量的方法用于使用 (2)隐藏对象内部的复杂性。只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。 (3)封装性的设计思想:把该隐藏的隐藏起来,该暴露的暴露出来 例如: public class Animal{ int age;//年龄可能被赋为负数,不符合实际 int legs;//腿有可能被赋为负数或奇数个,不符合实际 } 所以可以给属性设置一个get()和set()方法,来添加限制条件,并获取和设置相应的属性值,如下: public class Animal{ private int age; private int legs; //对属性的设置 publci void setAge(int age){

面向对象特征之多态性

耗尽温柔 提交于 2020-01-06 22:59:36
多态含义: 1.在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象。 2.在Java中,子类的对象可以替代父类的对象使用。   ➢一个变量只能有一种确定的数据类型   ➢一个引用类型变量可能指向(引用)多种不同类型的对象 多态作用: 提高了代码的通用性,常称作接口重用。 注意事项: 1.需要存在继承或者实现关系。 2.在Java程序中有成员方法的重写。 3.成员变量不具备多态性,只看引用变量所声明的类。 成员方法: 1.编译时:要查看引用变量所声明的类中是否有所调用的方法。 2.运行时:调用实际new的对象所属的类中的重写方法。 1 interface Animal{ //定义接口Anmal 2 void shout() ; //定义抽象shout()方法 3 } 4 5 //定义cat类实现Animal接口 6 class Cat implements Animal { 7 //实现shout()方法 8 public void shout() { 9 System.out.println("喵喵喵"); 10 } 11 } 12 13 //定义Dog类实现Animal接口 14 class Dog implements Anlmal { 15 //实现shout()方法 16 public void shout() { 17 Syatem.out.println(

如何评测软件工程知识技能水平?

偶尔善良 提交于 2020-01-06 15:54:49
一、什么是软件开发工程师?      软件工程师是从事软件开发工作人员的统称,包括软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是相对较高的,除了最基础的编程语言、数据库技术等,还需要掌握一些前沿技术,对于网络工程和软件测试的其他技术也要有所了解。   软件工程师分级   软件工程师一般情况下分为4级:   1、软件技术员 2、助理软件工程师 3、软件工程师 4、高级软件工程师 二、 软件开发的主要步骤   软件开发一般分为下述四个步骤需求、设计、编程和测试      需求   不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据......为了清楚地知道这些需求,你经常要和客户、项目经理等交流。   设计   编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。   编程   如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。   测试   目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。 三、 软件工程师应该掌握的技能   (1)具有扎实的计算机专业知识    

Java总结

↘锁芯ラ 提交于 2019-12-25 00:20:47
子类实例化 面向对象的特征三:多态性 多态性是面向对象中最重要的的概念,在Java中有两中体现。 1、方法的重载和重写 2、对象的多态性-可以直接应用在抽象的类和接口上 1)父类数据类型不能强制转换子类 2)兄弟类之间数据类型不能转换 instanceof操作符 x instanceof A 检验x是否为a类的对象,返回值是boolean值 object类是所有java的根父类 final关键字 表示“不可改变的最终的"的意思,用于修饰变量方法和类 内部类:在一个类体之间在定义一个类,在外部的类称为外部类,里面的类称为内部类。 设计魔石,单例模式:实现方法1)构造方法私有 2)用一个私有的静态变量引用实例 3)提供一个共有的静态方法获取实例 抽象类和抽象方法使用abstract关键字修饰 抽象方法一定有子类继承 抽象方法只能被继承,不能创建自己实体对象 接口:impactements实现接口 java。oj上的题 问题 A: 斐波那契数列(样例输入修改,请重看题!) 问题 B: 哪些数没有出现 问题 C: 进制运算(十进制转二进制) 问题 D: 不止排序 来源: 51CTO 作者: wx5db3a2bd5872f 链接: https://blog.51cto.com/14589613/2456959

Java面试题

我的梦境 提交于 2019-12-24 05:27:53
一、 你对 MVC 的理解, MVC 有什么优缺点?结合 Struts ,说明在一个 Web 应用如何去使用? 答: MVC 设计模式(应用观察者模式的框架模式) M: Model(Business process layer) ,模型,操作数据的业务处理层 , 并独立于表现层 (Independent of presentation) 。 V: View(Presentation layer) ,视图,通过客户端数据类型显示数据 , 并回显模型层的执行结果。 C: Controller(Control layer) ,控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图 MVC 框架的一种实现模型 --- 模型二 (Servlet-centric) : JSP+Servlet+JavaBean ,以控制为核心, JSP 只负责显示和收集数据, Sevlet ,连接视图和模型,将视图层数据,发送给模型层, JavaBean ,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种 MVC 的实现模式。 StrutsMVC 框架 (Web application frameworks) Struts 是使用 MVC 的实现模式二来实现的,也就是以控制器为核心。 Struts 提供了一些组件使用 MVC 开发应用程序:

cvte面试c++总结

妖精的绣舞 提交于 2019-12-21 05:07:51
在C++中,源程序变为可执行程序的正确顺序 编辑、编译、链接、执行 虚函数,纯虚函数,多态性 1、纯虚函数(pure virtual)纯虚函数的定义形式:virtual { } = 0;纯虚函数就是 基类只声明函数体 ,没有实现过程。时对子类的约束,是接口继承。 2、虚函数(Impure virtual)虚函数的定义形式:virtual {method body};c++的虚函数是 基类提供虚函数的实现 ,为子类提供默认的函数实现。它虚就虚在所谓“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。 虚函数只能借助于指针或者引用来达到多态的效果。 3、抽象类含有纯虚函数的类被称作抽象类,而 只含虚函数的类不能被称作抽象类 。抽象类是不能使用new创建新对象的,也就是抽象类不能被实例化,只有抽象类的派生类才可以用new创建对象。 4、多态性多态性是指相同对象收到不同消息或者不同对象收到相同消息时产生不同的实现动作。c++支持两种多态性: 编译时多态性、运行时多态性 。编译时多态性:通过重载函数实现。运行时多态性:通过虚函数实现。 一、定义 纯虚函数是在基类中声明的虚函数 ,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法