动手动脑-Java的继承与多态
一、
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 TestInherits
{ public static void main(String args[])
{ Child c = new Child(); } }
  
由输出可以知道基类继承父类的构造函数时,首先运行父类的构造函数,使用super函数时,代码必须是第一句。
构造函数的作用是对类的初始化,首先要对父类进行。
二、
public class ExplorationJDKSource {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(new A());
	}
}
class A{}
  
输出的是对象在内存空间地址的哈希值
三、
public class ParentChildTest {
	public static void 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{
	public int myValue=100;
	public void printValue() {
		System.out.println("Parent.printValue(),myValue="+myValue);
	}
}
class Child extends Parent{
	public int myValue=200;
	public void printValue() {
		System.out.println("Child.printValue(),myValue="+myValue);
	}
}
  
当子类父类拥有同名:
对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。
将子类型的对象赋给父类,子类型就代替父类对象,如果子类方法想访问父类中被隐藏的同名字段,可以用super关键字来访问它。
四、

第15,16行出现了编译错误,是类型转换时出错了。
将父类对象赋给子类时,要强制转换成父类类型,而将子类对象赋给父类时并不需要。
动手动脑-Java的继承与多态的更多相关文章
- Java的继承和多态
		
看了博客园里面的一个文章,关于java的继承和多态: class A ...{ public String show(D obj)...{ return ("A and D"); ...
 - Java面向对象㈡ -- 继承与多态
		
Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...
 - [转]Java中继承、多态、重载和重写介绍
		
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
 - [ Java学习基础 ] Java的继承与多态
		
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
 - 动手动脑-java重载
		
有以下例子: 例: Using overloaded methods public class MethodOverload { public static void main(String[] ar ...
 - Java基础——继承和多态
		
面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...
 - java面向对象--继承与多态
		
可以为一个变异单元中的每个类创建一个main方法,只有命令行所调用的那个类的main方法才会被调用,这样方便进行单元测试.继承时,一般将所有的数据成员都指定为private,将所有的方法指定为publ ...
 - Java中继承与多态
		
Java类的继承继承的语法结构: [修饰符列表] class 子类名 extends 父类名{ 类体; }子类就是当前这个类,父类就是我们要复用的那个类java中只支持单继承 ...
 - 原来你是这样的JAVA[03]-继承、多态、抽象类
		
一.继承 Java中的继承使用关键字extends ,跟C#的语法略有差别. 1.子类构造器 java会自动在子类的构造器中插入对父类构造器的调用,也就是说在子类可以访问父类之前已经完成了父类的初始化 ...
 
随机推荐
- vue中alert toast confirm loading 公用
			
import Vue from 'vue' import { ToastPlugin, AlertPlugin, ConfirmPlugin, LoadingPlugin } from 'vux' / ...
 - 异步socket处理
			
服务器端: #include <boost/thread.hpp> #include <boost/asio.hpp> #include <boost/date_time ...
 - SQL优化过程中常见Oracle HINT
			
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...
 - ASP.Net MVC(1) 之走进MVC
			
一.MVC三层架构: mvc三层架构,大家都比较熟悉了,这里再介绍一下.Mvc将应用程序分离为三个部分: Model:是一组类,用来描述被处理的数据,同时也定义这些数据如何被变更和操作的业务规则.与数 ...
 - c语言亲缘线程通过管道通信一些疑问
			
亲缘线程在使用管道时,发现第一次使用管道进行进行通信完全正常(./a.out 1),但当重新运行并使用新管道文件时候出现数据无法读取的问题(./a.out 2)(./a.out 3),甚至出现子线程部 ...
 - 人机交互之QQ拼音
			
随着电脑系统的不断更新,电脑自带的系统输入法也越来越适应广大群众了,那为什么其他的输入法还能占有大量的用户呢? 首先系统输入法是面向大众的,个性化方面略显不足. 其次系统输入法功能不够全面,比如说手写 ...
 - vue-router-5-命名路由
			
创建 Router 实例的时候,在 routes 配置中给某个路由设置名称 const router = new VueRouter({ routes: [ { path: '/user/:userI ...
 - tp配置
			
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...
 - SQL-19 查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
			
题目描述 查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工CREATE TABLE `departments` (`dept_no` c ...
 - 浅谈如何正确给table加边框
			
一般来说,给表格加边框都会出现不同的问题,以下是给表格加边框后展现比较好的方式 <style> table,table tr th, table tr td { border:1px so ...