多态

oop面向对象【接口、多态】

大兔子大兔子 提交于 2019-12-02 02:16:43
今日内容 1.接口 2.三大特征 —— 多态 3.引用类型转换 教学目标 1.写出定义接口的格式 2.写出实现接口的格式 3.说出接口中成员的特点 4.能够说出使用多态的前提条件 5.理解多态的向上转型 6.理解多态的向下转型 7.能够完成笔记本电脑案例(方法参数为接口) 第一章 接口 1.1 概述 接口,是 Java 语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是 封装了方法 ,包含抽象方法( JDK 7 及以前),默认方法和静态方法( JDK 8 ),私有方法 ( JDK 9 )。 接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成 .class 文件,但一定要明确它并 不是类,而是另外一种引用数据类型。 引用数据类型:数组,类,接口。 接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承)。一个实现接口的类(可以看做 是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象 类。 1.2 定义格式 public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法 } 含有抽象方法 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体

03-继承与多态

佐手、 提交于 2019-12-02 02:05:34
一:继承条件下的构造方法调用 运行示例,观察输出回答相关问题 package reserve; class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandparent { public Parent() { //super("Hello.Grandparent."); System.out.println("Parent Created"); // super("Hello.Grandparent."); } } class Child extends Parent { public Child() { System.out.println("Child Created"); } } public class Main { public static void main(String args[]) { Child c = new Child(); } } 测试截图: 问题:为什么子类的构造方法在运行之前

继承与多态课后动手动脑问题总结

亡梦爱人 提交于 2019-12-02 00:40:19
一、继承 1、题目 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数, 注意这句调用代码是否是第一句,影响重大! 代码如下: 1 class Grandparent { 2 public Grandparent(){ 3 System.out.println("GrandParent Created."); 4 } 5 public Grandparent(String string) { 6 System.out.println("GrandParent Created.String:" + string); 7 } 8 } 9 class Parent2 extends Grandparent{ 10 public Parent2(){ 11 super("Hello.Grandparent."); 12 System.out.println("Parent Created"); 13 // super("Hello.Grandparent."); 14 } 15 } 16 class Child2 extends Parent2 { 17 public Child2() { 18 System.out.println("Child Created")

动手动脑-多态

南楼画角 提交于 2019-12-02 00:28:09
怎样判断对象是否可以转换? 可以使用instanceof运算符判断一个对象是否可以转换为指定的类型: Object obj="Hello"; if(obj instanceof String) System.out.println("obj对象可以被转换为字符串"); 下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c;(子类是否能给子类赋值) c=(Cat)m; 源代码: class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat c=new Cat(); m=d;//子类d可以给父类m赋值 //d=m; d=(Dog)m; //d=c;//false //c=(Cat)m; } 原因:子类对象可以直接赋给基类变量。 基类对象要赋给子类对象变量,必须执行类型转换,其语法是:子类对象变量=(子类名)基类对象名。 更改后的代码为: class Mammal{} class Dog extends Mammal {} class Cat extends

继承,多态,接口与抽象类学习总结

落花浮王杯 提交于 2019-12-01 23:48:52
一,继承 动手实验_1: 题目:运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! TestInherits.java: class Grandparent { public Grandparent(){ System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent2 extends Grandparent{ public Parent2(){ super("Hello.Grandparent."); System.out.println("Parent Created"); // super("Hello.Grandparent."); } } class Child2 extends Parent2 { public Child2() { System.out.println("Child Created"); } } public class

运算符重载_继承_多态_模版

末鹿安然 提交于 2019-12-01 23:44:16
1:运算符重载 1 RMB.h 2 #ifndef RMB_H 3 #define RMB_H 4 5 #include <bits/stdc++.h> 6 using namespace std; 7 class RMB 8 { 9 public: 10 RMB(); 11 RMB(int, int); 12 virtual ~RMB(); 13 void display() 14 { 15 cout << "RMB:" << yuan << "."; 16 if(jf < 10) 17 { 18 cout << "0"; 19 } 20 cout << jf << endl; 21 } 22 friend RMB operator+(const RMB&, const RMB&);//作为友元函数的元素符重载 23 friend bool operator>(const RMB&, const RMB&); 24 int Getjf() { return jf; } 25 void Setjf(int val) { jf = val; } 26 int Getyuan() { return yuan; } 27 void Setyuan(int val) { yuan = val; } 28 RMB operator+(const RMB& s)//作为成员函数的运算符重载

多态的实现

隐身守侯 提交于 2019-12-01 23:36:55
package Test1; /** * * @author 刘子煜 *2019.10.22 * 多态的实现: * 多态是指方法的多态,不是属性的多态 * 多态存在的三个必要条件:继承的出现、方法的重写、父类引用指向子类对象 * 父类引用指向子类对象后,用该父类引用调用子类重写的方法,多态就实现了 */ public class Test12 { public static void main(String[] args) { Animal a=new Animal(); Cry(a); Dog d=new Dog(); //此处为父类引用指向子类对象 Cry(d); Cat c=new Cat(); //此处为父类引用指向子类对象 Cry(c); } static void Cry(Animal a1) { a1.shout(); } } //shout()方法的重写,Dog和Cat继承Animal类 class Animal{ public void shout() { System.out.println("叫了一声!!!"); } } class Dog extends Animal{ public void shout() { System.out.println("汪汪汪!!"); } } class Cat extends Animal{ public void

Java 多态

一世执手 提交于 2019-12-01 23:10:21
章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符串 Java Math Java 布尔运算 Java If … Else Java Switch Java While 循环 Java For 循环 Java Break 与 Continue Java 数组 Java 异常 Java 方法 Java 类与对象 Java 类、对象 Java 类的属性 Java 类方法 Java 构造函数 Java 修饰符 Java 封装 Java 包 Java 继承 Java 多态 Java 内部类 Java 抽象 Java 接口 Java 枚举 Java 用户输入/Scanner Java 日期与时间 Java ArrayList Java HashMap Java 包装类 Java 文件 Java 多态性 多态的意思是“多种形态”,当有很多通过继承关联起来的类时,就会发生多态性。 如 上一章 所述,继承可以从另一个类继承属性和方法,多态可以让这些方法执行不同的任务。 例如,考虑一个名为 Animal 的父类,有一个名为 animalSound() 的方法。 Animal 的子类可以是猪类、猫类、狗类、鸟类,它们也有自己的 animalSound()

06 多态

杀马特。学长 韩版系。学妹 提交于 2019-12-01 22:50:59
多态 多态实现的条件:继承,父类方法重写 多态的目的:接口重用。一个接口, 传进来不同的对象,执行的同样的方法,得到不同的结果 。 例如,定义一个父类:打印机。两个子类:彩色打印机,黑白打印机。 定义一个人类,具有使用打印机的方法,使用不同的打印机,打印出不同的结果。 class Printer(object): def print_something(self): pass class ColorPrinter(Printer): def print_something(self): print("打印出彩色的内容") class BlackPrinter(Printer): def print_something(self): print("打印出黑白的内容") class Person(object): def make_print(self, obj): obj.print_something() bp = BlackPrinter() cp = ColorPrinter() xiaoming = Person() xiaoming.make_print(cp) # 传入cp时,结果为:打印出彩色的内容。传入bp时,结果为:打印出黑白的内容    来源: https://www.cnblogs.com/scopicat/p/11719753.html

Javase学习记录之------多态南北方人案例

£可爱£侵袭症+ 提交于 2019-12-01 21:52:59
多态就是要用南方人的东西调用北方人的东西,南方人掉用南方人的东西就不需要多态了 class person { public void eat ( ) { System . out . println ( "吃东西" ) ; } } class southPerson extends person { public void eat ( ) { System . out . println ( "吃大米" ) ; } public void jingShang ( ) { System . out . println ( "经商" ) ; } } class northPerson extends person { public void eat ( ) { System . out . println ( "吃面条" ) ; } public void yanJiu ( ) { System . out . println ( "研究" ) ; } } public class DuoTai { public static void main ( String [ ] args ) { //多态的测试是通过person来做的; //南方人 person p = new southPerson ( ) ; p . eat ( ) ; //父类有eat所以我们可以调用eat,但是