Java实例化新思考

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
* @Author Mr.An
* @Date 18/7/5 下午5:45
*/
public class TestInherit {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
A a=new A(22,”wang”);
a.printa();
B b=new B(323.2);
b.printb();
b.printa();
b.printSuper();
B b2=new B(33,”aaa”,323.2);
b2.printa();
b2.printSuper();
B b3=new B(323.3);
b3.printa();
b3.printSuper();
Method methoda = A.class.getDeclaredMethod(“printa”, null);
methoda.invoke(b2,null);
}
}

class A{
private int num;
private String name;
public String tag=”A”;
A(){}
A(int num,String name){
this.num=num;
this.name=name;
}
public void printa(){
System.out.println(this.toString()+”–当前对象printa//”+name+”–:”+num);
}
}

class B extends A{
private double salary;
public String tag=”B”;
B(){}
B(double s){
this.salary=s;
}
B(int num,String name,double s){
super(num,name);
this.salary=s;
}
public void printb(){
System.out.println(this.toString()+”–当前对象printb//”+salary+”///salary”+”//tag=”+tag);
}
public void printSuper(){
System.out.println(this.toString()+”–当前对象printSuper//”+”父类实例–”+super.toString()+”//super.tag=”+super.tag);
}
}

/**
*运行结果:

*
*
*
* 如果子类的构造方法中调用了父类的构造器,子类实例的父类实例的对应的属性被赋值。调用继承的父类的方法,也能打印出来正确的父类私有属性。
*
* 子类定义时直接调用父类的私有方法编译器不通过。
*
* 但是在子类实例化的过程中,子类构造器默认调用父类的super()方法,
* 每new 一个子类实例都默认调用一次super()。或者子类构造器明确调用super(参数…)
* super.toString()打印的对象和子类对象是同一个!!!
* 说明子类实例和父类实例都是同一个对象中,但是父类的属性都会加上一个super. 比如super.
* 而且调用继承的父类方法时可以访问到父类的私有属性。所以说子类实例的内存对象中存储着父类的私有变量
* 但是不能显示的调用super.num等私有属性。就存在但不让你访问。 继承的父类方法是可以访问父类私有属性的。
*
*
*
*
*
A@51016012–当前对象printa//wang–:22
B@29444d75–当前对象printb//323.2///salary//tag=B
B@29444d75–当前对象printa//null–:0
B@29444d75–当前对象printSuper//父类实例–B@29444d75//super.tag=A
B@2280cdac–当前对象printa//aaa–:33
B@2280cdac–当前对象printSuper//父类实例–B@2280cdac//super.tag=A
B@1517365b–当前对象printa//null–:0
B@1517365b–当前对象printSuper//父类实例–B@1517365b//super.tag=A
B@2280cdac–当前对象printa//aaa–:33
*
*
* JAVA实例化时跟 python的子类调用父类的init方法类似。
* 实际上都是在一个实例化地址里面添加父类的属性。
*
*
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值