JAVA 多态 技术教程文章

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)【代码】

1:final关键字(掌握)(1)是最终的意思,可以修饰类,方法,变量。(2)特点:A:它修饰的类,不能被继承。B:它修饰的方法,不能被重写。C:它修饰的变量,是一个常量。(3)面试相关:A:局部变量a:基本类型 值不能发生改变b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的B:初始化时机a:只能初始化一次。b:常见的给值定义的时候。(推荐)构造方法中。 2:多态(掌握)(1)同一个对象在不同时刻体现出来的不同状态。(2)多态的前提:A...

java基础之【继承--->多态】内存图【图】

多态】内存图' src="/upload/getfiles/default/2022/11/16/20221116025906708.jpg" />执行流程1:Animal a = new Cat();1.1:在栈中创建区域,类型为Animal,变量名:a;1.2:在堆中new Cat();占用一块区域。地址值:[0x3a4]1.3:spuer()实例化父类Animal。1.3.1:new Animal();占用一块区域,地址值:0x3ab;1.3.2:引用着在方法区中初始化[Animal中的所有方法,该引用为:[0x754]]。1.3.3:将Animal()引用赋给spuer();spuer引用着Animal();1...

Java多态性的“飘渺之旅”【代码】【图】

原文出处:斯武丶风晴摘要: 如何从Java多态性进行飘渺之旅呢? 我们用例子来旅行。 1 朵星人A:人类,是一个很奇妙的物种。2 朵星人B:他们好像分为两种,嗯 先生,以及美女?3 朵星人C:对,更年轻的有叫 美少女的。4 朵星人D:他们之间怎么打招呼的?我们问问AI(编译器大佬)吧。。5 朵星人A:可以有。启动吧~第一次启动: 1/**2 * 编译时多态3 *4 * @author Sven Augustus5 */ 6publicclass StaticTest {7 8staticabstra...

JAVA 多态和异常处理作业——动手动脑以及课后实验性问题【图】

1、 阅读以下代码(CatchWho.java),写出程序运行结果:1) 源代码public class CatchWho{ public static void main(String[] args) { try { try { throw new ArrayIndexOutOfBoundsException(); } catch(ArrayIndexOutOfBoundsException e) { System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-...

Java基础14-多态(思想、转型、instanceof)【代码】【图】

一、什么是多态?1.多态的定义多态,字面意思就是多种状态,他表示一种事物的多种状态。class Animal{publicvoid eat() {System.out.println("吃一般的食物");} } //狗和猫类继承动物类并重写eat方法class Dog extends Animal{publicvoid eat() {System.out.println("吃骨头");} } class Cat extends Animal{publicvoid eat() {System.out.println("吃鱼");} } publicclass duotai {publicstaticvoid main(String[] args) {//当代码...

JAVA 面向对象中的多态【代码】【图】

多态是继封装、继承之后,面向对象的第三大特性。现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父...

java 多态【代码】

(1)在多体中非静态成员函数的特点:在编译时期,参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有,编译失败在运行时期,参阅对象所属的类中是否有调用的方法简单总结就是:成员函数在多态调用时,编译看左边,运行看右边(2)在多体中静态成员函数的特点:无论编译和运行,都参考左边。(3)在多态中,成员变量的特点:无论编译和运行,都参考左边(引用型变量所属的类) 1class Fu{2staticint num = 1;3...

Java基础_学习笔记_13_类的多态性(二)【代码】

1class Animal2{3private String name;4 Animal(String name)5 {6this.name=name;7 }8publicvoid enjoy()9 { 10 System.out.println("叫声。。。"); 11 } 12} 13class Cat extends Animal 14{ 15private String eyeColor; 16 Cat(String n,String eyeColor) 17 { 18super(n); 19this.eyeColor=eyeColor; 20 } 21publicvoid enjoy() 22 { 23 System.out.println("猫叫声。。。"); 24 ...

java多态【代码】

一、概念多态:同一份代码(方法)可以毫无差别的作用在不同的类型上或者说同一份代码(方法)作用在不同的类型上会产生不同的行为。在java中多态是基于类继承或接口实现而实现的。二、案例public class Shape{public void draw(){} }public class Circle extends Shape{public void draw(){System.out.println("circle draw.");} }public class Square extends Shape {public void draw() {System.out.println("Square draw.");} ...

JAVA面向对象之三:多态性

可以理解为一个事物的多种形态。对象的多态性是指,父类的引用指向子类的对象(或子类的对象赋给父类的引用)。多態的使用,即虛擬方法調用了對象的多態性以後,我們在編譯期,只能調用父類中聲明的方法,但在運行期,實際執行的是子類重寫父類的方法。因此多态是运行时的行为。子類中定義了與父類同名同參數的方法,在多態情況下,將此時父類的方法成爲虛擬方法,父類根據賦給他的不同子類對象,動態調用屬於子類的該方法,這樣的...

《java入门第一季》之面向对象(多态练习)

接下来经过一个例子,对多态问题加深印象:猫狗案例。/*多态练习:猫狗案例 */ class Animal {public void eat(){System.out.println("吃饭");} }class Dog extends Animal {public void eat() {System.out.println("狗吃肉");}public void lookDoor() {System.out.println("狗看门");} }class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}public void playGame() {System.out.println("猫捉迷藏");} }...

java多态【代码】

class Base{ private String name = "base"; Base(){ tellName(); printName(name); } public void tellName(){ System.out.println("tell "+ name); } public void printName(String name){ System.out.println("print "+ name); } } class Drived extends Base{ private String name = "Drived"; Drived(){ tellName(); printName(name); } public void tellName(){ System.out.println("tell "+ name); } public void printNa...

理解java的三大特性之多态(三)【代码】

摘自:http://cmsblogs.com/?p=52面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: 所谓...

Java中的多态应用【代码】

1class Test {2publicstaticvoid main(String[] args) {3 System.out.println(new B().getValue());      //1、执行B的构造方法       //14、执行父类A的getValue得到17       //18、输出返回值174 }5staticclass A {6protectedint value;7public A (int v) {8 setValue(v);         //3、调用子类B重写的setValue9 } 10publicvoid setValue(int value) { 11this.value=...

Java的final和多态

*************************简述一下final(面试题)*********************************一.修饰变量1. 基本类型final double PI = 3.14;// 最终变量 表示常量 只能被赋值一次PI = 3.15;//编译报错 无法为最终变量PI分配值2.引用类型final String s = "aaa";//最终引用 表示s只能引用 "aaa" 不能再引用其他对象了s = "bbb";//编译报错二. 修饰类最终类 最终类不能被继承 相当于类的最终版本程序员如果编写一个类,不想让别人继承,可以...

Java 子类初始化父类的构造方法 成员变量不支持多态

class Fu{ int a=2; Fu() { System.out.println("fu run"); }}class Zi extends Fu{ Zi() { System.out.println("zi run"); }}public class Copy { public static void main(String[] args) { Zi zi = new Zi(); System.out.println(zi.a); }}运行结果为 fu run ,zi run ,0 说明子类在实例化的时候,调取了父类的构造函数中的方法,但并没有调用成员变量。,====== 子类 实例化的时候 默认调用父类为空的构造方法 即super...

Java中的多态【代码】【图】

子类和父类定义了一模一样的字段和方法,将会出现什么样的结果。运行以下代码,看看会出现什么样的结果。 publicclass ParentChildTest {publicstaticvoid main(String[] args) {Parent parent=new Parent();parent.printValue();Child child=new Child();child.printValue();parent=child;parent.printValue();parent.myValue++;parent.printValue();((Child)parent).myValue++;parent.printValue();} }class Parent{publicint my...

Java的多态机制原理【代码】【图】

一、静态绑定和动态绑定的区别在Java中,当你调用一个方法时,可能会在编译时期(compile time)解析(resolve),也可能实在运行时期(runtime) 解析,这全取决于到底是一个静态方法(static method )还是一个虚方法(virtual method)。如果是在编译时期解析,那么就称之为静态绑定(staticbinding)[换句话说静态方法就是在编译期解析的],如果方法的调用是在运行时期解析,那就是动态绑定(dynamic binding)或者延迟绑定(late binding)。Ja...

java的多态【代码】

publicclass Fu {String num = "fu";static String age ="fu static";void show() {System.out.println("fu show ");}staticvoid method() {System.out.println("fu static method ");} }publicclass Zi extends Fu {String num = "zi";static String age ="zi static";void show() {System.out.println("zi show ");}staticvoid method() {System.out.println("zi static method ");}publicstaticvoid main(String[] a...

Java的多态【代码】【图】

多态原理什么是多态编译时多态->方法重载运行时识别对象和类的类型信息方法:反射RTTI(Run-Time Type Identification,运行时类型判定)RTTI: 在编译时获取对象的类型信息.多态:一个接口的多种不同的实现方式.只有在运行时才知道引用变量所指向的具体实例对象.实现的三个条件: 继承重写/实现父类引用指向子类对象多态的用法两种实现方式子类继承父类(extends)类实现接口(implements)核心:声明是父类类型或接口类型,创建的是实际类型.示...