Java 向上类型转换与向下类型转换的理解【复习】

今天在回顾 Java 知识的时候碰到了这个知识点,正好重新巩固一下。

在面向对象编程中,因为子类与父类存在继承关系,所以对象类型存在着转换,包括向上类型转换和向下类型转化。

1.向上类型转换是指将子类对象的引用转化为父类对象的引用,用个例子说明一下:

//父类:
public class ParentClass {
	public void print() {
		System.out.println("父类方法");
	}
}
// 子类
public class ChildClass extends ParentClass{
	public void print() {
		System.out.println("子类方法");
	}
	public void childMethod() {
		System.out.println("只在子类中定义的方法 ");
	}
	public static void main(String[] args) {
		ParentClass p = new ChildClass();
		p.print();
	}

}

输出结果为:

子类方法

也就是子类的 print() 方法重写了父类的方法,所以输出的是子类的 print()
子类对象的引用转化为父类对象的引用” 这句话
等号右边new ChildClass()就是子类对象的引用
将等号右边的东西赋值给等号左边,就是转化为父类对象的引用
这样应该明白这句话了吧

当我们在写 p. 什么东西的时候,编辑器自动弹出的只有 print()这个方法,而没有childMethod()这个方法,所以,这个向上类型转换的意思就是子类向上类型转化成父类的对象,如果子类重写了父类的方法,输出结果是子类重写的方法,如果父类中没有的方法,而在子类中存在的方法是不可以调用的,归根结底一句话,父亲有的东西你才能调用,父亲给你留下的你怎么修改是你的事

在这里插入图片描述

2.向下类型转换是指将父类对象的引用转化为子类对象的引用
直接看例子吧,对比着向上类型转换理解

// 父类
public class ParentClass {
	public void print() {
		System.out.println("父类方法");
	}
}
// 子类
public class ChildClass extends ParentClass{
	public void childMethod() {
		System.out.println("只在子类中定义的方法 ");
	}
	public static void main(String[] args) {
		ParentClass p = new ChildClass(); // 这里是向上类型转换
		p.print();
		
		ChildClass c = (ChildClass)p; // p本来是父类对象的引用,现在我要做的是向下类型转换,所以,强制把父类对象的引用转化为了子类对象的引用
		c.print();
		c.childMethod();
	}
}

输出结果:

父类方法
父类方法
只在子类中定义的方法 

再说明一下 向下类型转换:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用类型

有的同学问了,问啥不直接这样写:

ChildClass child = new ParentClass();

问的好,因为,我们并不能保证子类的方法父类一定有是吧,所以要按照上面的例子那样写。

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Java与MySQL数据库之间的数据类型转换可以使用Java的JDBC(Java Database Connectivity)驱动程序来实现。以下是一些常见的Java类型与MySQL数据库类型之间的转换示例: 1. 字符串类型(String)和MySQL的VARCHAR、CHAR类型之间的转换: - Java中的String类型可以直接赋值给MySQL的VARCHAR、CHAR类型的列。 - MySQL的VARCHAR、CHAR类型可以通过getString方法获取为Java的String类型。 2. 整数类型(int、long、short)和MySQL的整数类型(INT、BIGINT、SMALLINT)之间的转换: - Java的整数类型可以直接赋值给MySQL的整数类型的列。 - MySQL的整数类型可以通过getInt、getLong、getShort等方法获取为对应的Java整数类型。 3. 浮点数类型(float、double)和MySQL的浮点数类型(FLOAT、DOUBLE)之间的转换: - Java的浮点数类型可以直接赋值给MySQL的浮点数类型的列。 - MySQL的浮点数类型可以通过getFloat、getDouble等方法获取为对应的Java浮点数类型。 4. 日期时间类型java.util.Date、java.sql.Date、java.sql.Timestamp)和MySQL的日期时间类型(DATE、TIME、DATETIME)之间的转换: - Java的日期时间类型可以通过Java的SimpleDateFormat等类进行格式化,然后赋值给MySQL的日期时间类型的列。 - MySQL的日期时间类型可以通过getDate、getTime、getTimestamp等方法获取为对应的Java日期时间类型。 总之,通过JDBC的ResultSet和PreparedStatement对象提供的get和set方法,可以在Java和MySQL数据库之间轻松进行数据类型的转换。此外,对于更复杂的类型转换,还可以使用Java的ORM(对象关系映射)框架,如Hibernate、MyBatis等来简化操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁同学与Android

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值