多态

java基础面试题(一)

匿名 (未验证) 提交于 2019-12-02 21:52:03
1.java中的数据类型,各占多少个字节?       2.面向对象的特性   1-封装:简单来说,封装就是把数据和操作数据的方法绑定起来,如果需要访问,可以使用已定义的接口进行访问   2-继承:从已有的类得到继承信息创建新的类的过程。提供继承信息的类称为父类(也叫超类,基类);得到继承信息的类称为子类(也叫派生类)   3-多态:允许不同的子类对同一消息做出不同的响应,也就是父类的引用指向子类的对象。而多态性又分为编译时多态和运行时多态。方法重载实现的是编译时多态(前绑定),方法重写实现的是运行时多态(后绑定)。实现多态的两件事:第一就是方法的重写(子类继承父类并重写父类中已有的和抽象方法);第二就是对象造型(父类的引用指向子类的对象)   4-抽象:将一类对象的共同特征总结出来构造类的过程。包括数据抽象和行为抽象。抽象只关注对象有哪些行为和属性,对于行为的细节并不关注 ***注意:对象的特性默认情况下有3种,封装,继承,多态。如果面试官说了四种,那就加上抽象 3.访问权限修饰符public,protected,private,default(默认)的区别即访问范围 4. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?   答:第一个是错的,因为1是int类型的,而s1+1的运算结果也是int类型的,需要强转

Java多态详解

匿名 (未验证) 提交于 2019-12-02 21:52:03
package QianFeng02; //多态 public class Polymorphic { public static void main(String[] args){ // HomeCh homeCh=new HomeCh("家鸡1");//一般实例化 Chickens homeCh=new HomeCh("家鸡1");//Chickens是父类 HomeCh是子类(多态) homeCh.eat(); Chickens pheasant=new Pheasant("野鸡2"); pheasant.eat(); //用父类的引用指向子类的对象 // homeCh=pheasant; // homeCh.eat(); System.out.println("------------------------"); eat(homeCh); eat(pheasant); Chickens jan=new Jan("尖叫鸡4");//Chickens也可以替换为Jan eat(jan); } //抽象:::面向抽象编程 public static void eat(Chickens c){//Chickens是父类可以传不同类的对象(而不是只传jan对象或者homeChdu对象) System.out.println("鸡翅3"); c.eat(); } } //鸡 //

Java 多态案例

匿名 (未验证) 提交于 2019-12-02 21:52:03
|--需求说明 用多态的方式写一个宠物生病看医生的例子 |--实现方式 采用多态实现 |--代码内容 1 public class Pet { 2 private String name = "无名氏";// 昵称 3 private int health = 100;// 健康值 4 private int love = 20;// 亲密度 5 6 //无参构造方法 7 public Pet() { 8 } 9 10 //带参构造方法 11 public Pet(String name, int health, int love) { 12 this.name = name; 13 this.health = health; 14 this.love = love; 15 } 16 17 public String getName() { 18 return name; 19 } 20 21 public void setName(String name) { 22 this.name = name; 23 } 24 25 public int getHealth() { 26 return health; 27 } 28 29 30 //设定健康值的范围 31 public void setHealth(int health) { 32 if (health < 0 ||

Java多态的实现机制是什么

匿名 (未验证) 提交于 2019-12-02 21:45:52
Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。 浅谈多态机制的意义及实现 在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。 多态并没有一个严格的定义,维基百科上给它下的定义比较宽松: Subtype polymorphism, almost universally called just polymorphism in the context of object-oriented programming, is the ability of one type, A, to appear as and be used like another type, B. 一、子类型和子类 子类型比子类有更严格的要求,它不仅要求有继承的语法,同时要求如果存在子类对父类方法的改写(override),那么改写的内容必须符合父类原本的语义,其被调用后的作用应该和父类实现的效果方向一致。 对二者的对比是想强调一点:只有保证子类都是子类型

Java实验七, 接口与多态

匿名 (未验证) 提交于 2019-12-02 21:35:18
一. 实验目的 1. 理解接口与多态; 2. 掌握接口回调技术; 3. 掌握面向接口编程思想。 二. 实验内容及要求 卡车要装载一批货物,货物由电视机、计算机和洗衣机组成,卡车需要计算出整批货物的重量。编写能够满足如下条件的程序: 1. 定义一个接口,包含计算货物重量的抽象方法。 2. 分别定义实现上述接口的用于计算电视机、计算机和洗衣机的类。 3. 定义一个卡车类,在其中定义一个数组成员变量表示其装载的货物,并提供能计算所载整批货物重量的方法。 4. 在主类中模拟卡车装载N件货物,每件货物的类别随机,输出其所载货物的总重量。 三. 实验过程及结果 Goods.java public interface Goods { double cal_weight();//计算货物重量的抽象方法 } TV.java public class TV implements Goods{ double singleTVWeight;//单个电视机重量 double single_weight[] = {5.5, 3.1, 4.1, 6};//可选择的电视机重量 public TV(int randomInt) { this.singleTVWeight = single_weight[randomInt]; }//构造方法,从single_weight[]中随机选中一个重量并设置 public

Java封装、继承、多态

匿名 (未验证) 提交于 2019-12-02 21:35:04
封装、继承、多态 一.面向对象的三大特征 (1.)封装:encapsulation ①.隐藏类的实现细节 ②.让使用者只能通过预定方法访问数据,限制对成员变量不合理访问 ③.可进行数据检查,从而有利于保证对象信息的完整性 ④.便于修改,提高代码的可维护性 ⑤.将对象的成员变量和实现细节隐藏起来,不允许外部直接访问 ⑥.方法暴露出来,让方法控制成员变量进行安全访问和操作 ①.公开的类 public 修饰的 ②.私有的属性 private ③.公开的 getter、setter 方法 ④.提供公开的无参构造方法(默认) (2.)继承:inherited ● 什么是继承?以及意义。 java继承通过extends关键字来实现只能单继承,可以多层继承,但不能同时继承两个父类,子类和父类必须满足isA关系,父类是大类,子类是小类,子类可以访问到父类所有的可见成员(private) ● 方法重写(重要) 子类包含父类同名方法的现象称为方法的重写(override),也称为方法的覆盖 ①.方法名相同,参数列表相同 ②.子类重写方法的返回值类型 <= 父类的返回值类型 ③.子类重写方法的访问权限 >= 父类的访问权限 ④.不能抛出更多异常(暂时不研究) (3.)多态:polymorphism 一个对象在不同条件下表现出不同的形态,java引用变量有两个类型:一个是编译时类型,一个是运行时类型

Java多态

混江龙づ霸主 提交于 2019-12-02 21:27:27
多态:是同一个行为具有多个不同表现形式 (就是同一个接口,使用不同的实例而执行不同操作。) 多态存在的三个必要条件: 继承 重写 向上转型(父类引用指向子类对象) 创建一个Animal父类 ` public class Animal{ private String name; public void eat(){ System.out.println("吃"); } } ` 创建一个Cat类继承Animal类,且重写父类方法 ` public class Cat extends Animal{ private String name; @Override public void eat(){ System.out.println("猫吃饭"); } public void sleep(){ System.out.println("猫睡觉"); } } ` 主方法 //将Dog类向上转型成Animal类 Animal a=new Cat(); a.eat(); 来源: https://www.cnblogs.com/TD1900/p/11763008.html

OOP三大核心封装继承多态

馋奶兔 提交于 2019-12-02 16:53:16
OOP 支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用。 继承就是基于已有类来创建新类可以继承基类的核心功能。 多态就是同一请求,不同的响应操作。 来源: https://www.cnblogs.com/cdjbolg/p/11755867.html

python继承多态(第三节)

旧城冷巷雨未停 提交于 2019-12-02 16:46:52
继承机制: 最大的好处就是子类获得父类的全部功能 class Animal(object): def run(self): print( "Animal is running" ) class Dog(Animal): pass class Duck(Animal): pass dog = Dog() dog.run() duck = Duck() duck.run() 也可以对子类增加一些方法 class Animal(): def run(self): print( " 动物会跑 " ) class Dog(Animal): def eat(self): print( " 吃吧 " ) class Duck(Animal): pass dog = Dog() dog.run() dog.eat() 派生类可以继承父类的公有成员,但是不能继承其私有成员。( 可以使用super()或者基类名.方法名()的方式强制继承父类 ) class Parent(object): def public(self): print("parent public") def __private(self): print("parent private") def __int__(self): print("父类构造器") class Son(Parent): def __int__(self):

Spring学习小结(一)

限于喜欢 提交于 2019-12-02 15:29:17
1.继承不是代码片段的继承,而是代码权限的继承。 2.方法的重写是子类又在方法区开辟了一块空间,并不是覆盖。 3.编译进行静态绑定,运行进行动态绑定,静态方法也是存在覆盖的,不存在覆盖和重写是基于多态而言的。 4.多态是相同的引用调相同的方法出现不同的结果。 5.多态的发生需要三个条件: 1)继承 2)重写 3)上转型upCasting(父类引用指向子类对象) Spring是一个容器,用于降低代码间的耦合度,根据不同的代码,它采用了IOC和AOP两种技术。 下载spring可以根据 https://www.cnblogs.com/chy18883701161/p/11108542.html 去下载 来源: https://blog.csdn.net/ls_wifi/article/details/102709571