向上转型---父类引用指向子类对象 A a = New B()的使用
一。向上转型
向上转型是JAVA中的一种调用方式,是多态的一种表现。向上转型并非是将B自动向上转型为A的对象,相反它是从另一种角度去理解向上两字的:它是对A的对象的方法的扩充,即A的对象可访问B从A中继承来的和B重写A的方法,其它的方法都不能访问,包括A中的私有成员方法。
class Father{
public void sleep(){
System.out.println("Father sleep");
}
public void eat() {
System.out.println("Father eat");
}
}
class Son extends Father {
public void eat() {
System.out.println("son eat");//重写父类方法
}
//子类定义了自己的新方法
public void newMethods() {
System.out.println("son method");
}
}
public class Demo {
public static void main(String[] args) {
Father a = new Son();
a.sleep();
a.eat();
//a.methods(); /*报错:The method methods() is undefined for the type Father*/
}
}
1、a实际上指向的是一个子类对象,所以可以访问Son类从Father类继承的方法sleep()和重写的方法eat()
2、由于向上转型,a对象会遗失和父类不同的方法,如methods();
简记:A a = New B()是new的子类对象,父类的引用指向它。儿子自己挣的东西,父亲不能访问。父亲给儿子留下的(extends)或者儿子重写父亲的东西,父亲才能访问
答案:
Father sleep
son eat
二。静态方法不能算方法的重写
class Father {
public int num = 100;
public void show() {
System.out.println("show Father");
}
public static void function() {
System.out.println("function Father");
}
}
class Son extends Father {
public int num = 1000;
public int num2 = 200;
public void show() {
System.out.println("show Son");
}
public void method() {
System.out.println("method Son");
}
public static void function() {
System.out.println("function Son");
}
}
public class DuoTaiDemo {
public static void main(String[] args) {
// 要有父类引用指向子类对象。
// 父 f = new 子();
Father f = new Son();
System.out.println(f.num);
// 找不到符号
// System.out.println(f.num2);
f.show();
// 找不到符号
// f.method();
f.function();
}
}
答案:
100
show Son
function Father
向上转型的目的是规范和扩展,提高代码的维护性和扩展性
向上转型---父类引用指向子类对象 A a = New B()的使用的更多相关文章
- java多态性,父类引用指向子类对象
父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new C ...
- java 父类引用指向子类对象---动态绑定
知识点: 1.java 中父类引用指向子类对象时动态绑定针对的只是子类重写的成员方法: 2.父类引用指向子类对象时,子类如果重写了父类的可重写方法(非private.非 final 方法),那么这个对 ...
- Java多态-如何理解父类引用指向子类对象
java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”. 我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类.我可以通过 Cat c = new ...
- 28 面向对象编程 instanceof 代码 小结 父类引用指向子类对象
instanceof 代码 // main // Object > Person >Student Object object = new Student(); // 提取公式:XY之间是 ...
- java-多态中成员访问特点-父类引用指向子类对象
多态前提: - 要有继承关系. - 要有方法重写. - 要有父类引用指向子类对象. 1.成员变量:编译看左边(父类),运行看左边(父类) 2.成员方法:编译看左边(父类),运行看右边(子类),动态绑定 ...
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
关于父类引用指向子类对象 例如: 有以下2个类 public class Father { public int age = 70; public static string name = " ...
- Java多态 父类引用指向子类对象
Java多态的三个必要条件: 1. 继承 2. 子类重写父类方法 3. 父类引用指向子类对象 然后看一个例子 输出结果为: 给出结论:Father c = new Child() 在c的 ...
- JAVA基础复习与总结<一>(2) 父类引用指向子类对象(向上转型、动态链接)
先来看看下列代码 public class Animal { public static void main(String[] args){ Animal animal = new Cat(); // ...
- C++析构函数的自动调用(用于父类指针指向子类对象,内存泄漏问题)
class A {public:A() { printf("A \n"); }~A() { printf(" ~A \n"); } // 这里不管写不写virt ...
随机推荐
- python的os.path.join()
在python中,os.path.join()是用来拼接目录路径得.同类型得还有join(),os.path.spilt(),spilt()三个函数.1,os.path.join(),将join()里 ...
- Jmeter处理https请求
首先来看一下HTTPS和HTTP的区别主要如下: 1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用. 2.http是超文本传输协议,信息是明文传输,https则是具有安全性的s ...
- response.setHeader();小结
response.setHeader():1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cac ...
- tensorflow队列tf.FIFOQueue | enqueue | enqueue_many | dequeue | dequeue_many
关于队列的相关知识,盗用一张https://blog.csdn.net/HowardWood/article/details/79406891的动态图 import tensorflow as tf ...
- MySQL事务的四种隔离级别
事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约 ...
- 通过URL传参数,然后第二个页面需要获取参数
/** * 方法说明:通过url参数键值名称获取参数的值 * @method getQueryString * @param name 要获取的参数键值 * @return * @remark */ ...
- create-react-app创建项目后,运行npm run eject报错解决方法
运行npm run eject报错解决方法 主要问题是脚手架添加.gitgnore文件,但是却没有本地仓库,使用以下命令操作以下就可以了 git init git add . git commit - ...
- 使用python开启你的opencv之旅---图像的读入,存储
python的便捷是如此的引人着迷,而opencv给python提供的接口使我们能够使用python来快速验证我们的想法,或者与别的模块快速结合,在这个系列文章我会通过jupyter notebook ...
- 链接socket加异常
try { channel = AmqpClient::Channel::Create("10.10.22.105", 5672, "admin", " ...
- maven更换下载镜像源-解决下载慢问题(转)
转自:http://www.cnblogs.com/duking1991/p/6110192.html maven更换下载镜像源-解决下载慢问题 Maven是当前流行的项目管理工具,但官方的库在国 ...