[{"createTime":1735734952000,"id":1,"img":"hwy_ms_500_252.jpeg","link":"https://activity.huaweicloud.com/cps.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905","name":"华为云秒杀","status":9,"txt":"华为云38元秒杀","type":1,"updateTime":1735747411000,"userId":3},{"createTime":1736173885000,"id":2,"img":"txy_480_300.png","link":"https://cloud.tencent.com/act/cps/redirect?redirect=1077&cps_key=edb15096bfff75effaaa8c8bb66138bd&from=console","name":"腾讯云秒杀","status":9,"txt":"腾讯云限量秒杀","type":1,"updateTime":1736173885000,"userId":3},{"createTime":1736177492000,"id":3,"img":"aly_251_140.png","link":"https://www.aliyun.com/minisite/goods?userCode=pwp8kmv3","memo":"","name":"阿里云","status":9,"txt":"阿里云2折起","type":1,"updateTime":1736177492000,"userId":3},{"createTime":1735660800000,"id":4,"img":"vultr_560_300.png","link":"https://www.vultr.com/?ref=9603742-8H","name":"Vultr","status":9,"txt":"Vultr送$100","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":5,"img":"jdy_663_320.jpg","link":"https://3.cn/2ay1-e5t","name":"京东云","status":9,"txt":"京东云特惠专区","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":6,"img":"new_ads.png","link":"https://www.iodraw.com/ads","name":"发布广告","status":9,"txt":"发布广告","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":7,"img":"yun_910_50.png","link":"https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=aXhpYW95YW5nOA===&utm_medium=cps&utm_campaign=201905","name":"底部","status":9,"txt":"高性能云服务器2折起","type":2,"updateTime":1735660800000,"userId":3}]
<>父类与子类
<>总的来说一句
实例化是谁,谁提供成员变量以及属性,谁声明,用谁的变量与函数的范围。
这个可能与对象的实现机制有关,后面扒一扒java底层和jvm应该好理解。
<>关系
父类就是被继承的那个类,也叫做基类、超类。子类就是继承父类的类。他们之间的关系主要 是以下几点 1.声明表示调用范围。 2. 实例化表示最终的对象类型。
解释如下
父类与子类之间,除了父类实例化的不能强制转换成子类,其他的都可以。比如父类声明子类实例化,可以将父类强制转换成子类,而子类声明子类实例化的也可以强制转化成父类。
对于调用范围一说,看它声明是父类还是子类,父类只能调用父类所包含的属性,但调用的还是实例化对象的。
<>举个例子
A为父类 B为子类。
* A声明B实例化(new出来的那个),则只能调用A所拥有的属性,但是调用的属性是由B(实例化提供的)。如果强制转换成B,则调用属性可以为B的
* B声明B实例化,如果强制转换成A的话,如1中所说。
<>代码
<>父类
就一个DO函数
public class class1 { public void DO(){ System.out.println("class1"); } }
<>子类
子类重写父类的DO函数
public class class2 extends class1 { public void DO(){ System.out.println("子类")
; } }
<>Main
public class main { public static void main(String[] args) { //父类声明父类实例化
father father1=new father(); father1.DO(); //父类声明子类实例化 father father2 =new son()
; father2.DO(); //父类声明子类实例化强制转成子类 son son1 =(son) father2; son1.DO();
//子类声明子类实例化 son son2=new son(); son2.DO(); //子类声明子类实例化 father father3=(father)
son2; father3.DO(); } }
结果看一下,除了父类声明父类始化输出不同,其他子类实例化的输出都一样。
<>父类声明父类实例化 强制转换成子类(error)
public class main { public static void main(String[] args) { //父类声明父类实例化
father father1=new father(); //father1.DO(); son son=(son)father1; son.DO(); } }
ERROR的,父类实例化不能强制转化成子类的。
<>总结
* 父类实例化不能强制转化成子类的。
* 实例化是谁,谁提供成员变量以及属性,谁声明,用谁的变量与函数的范围。