java-(继承、子父类中的变量的特点、子父类中函数的特点-覆盖、)

继承:查阅父类功能,创建子类对象使用功能。


聚集:has a
聚合:
组合:

----------------------------------------------------------------------------------------吐舌头

子父类中的变量的特点:

如果子类中出现非私有的同名成员变量时,
子类要访问本类中的变量,要用this
子类要访问父类中的同名变量,用super


super的使用和this的使用几乎一致
this代表的是本类对象的引用
super代表的是父类对象的引用
---------------------------------------------------------------------------------------- 吐舌头

子父类中函数的特点-覆盖:

package asa;
/*
 * 子类已经拿到了父类中的内容,
 * class fu{
	void show1(){
		System.out.println("fu show");
	}
}
class zi extends fu{
	void show2(){
		System.out.println("zi show");
	}
}
public class aaaa {
	public static void main(String [] args)
	{
		zi z=new zi();
		z.show1();
		z.show2();
	}
}
 * 
 */


/*
 * 当子类出现和父类一模一样的函数时,
 * 当子类对象调用该函数,会运行子类函数的内容
 * 如同父类的函数被覆盖一样
 * 
 *这种情况是函数的另一个特性,重写(覆盖)。
 * class fu{
	void show(){
		System.out.println("fu show");
	}
}
class zi extends fu{
	void show(){
		System.out.println("zi show");
	}
}
public class aaaa {
	public static void main(String [] args)
	{
		zi z=new zi();
		z.show();
	}
}
//控制台输出结果:
 * zi show
*/
当子类继承父类,沿袭了父类的功能,到子类中,
但是子类岁具备了该功能,但是功能的内容却和父类不一致。
这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。

-------------------------------------------------------------------------------------------------------------------------------------------吐舌头

package asa;

/*
 * 子父类中的构造函数
 * 覆盖要一模一样,子父类中的构造函数是不一样的。
 * 
 */
class fu{
	fu(){
		System.out.println("fu fun");
	}
}

class zi extends fu{
      zi(){
    	  //super();
    	  System.out.println("zi fun");
      }
}


public class aaaa {
	public static void main(String [] args)
	{
		zi z=new zi();
	}
}
/*控制台输出结果是:
 * fu fun
 * zi fun
 * 由此可见,编译不仅走了子类,还走了父类。而且还是先走的父类。
 * 其实是子类的构造函数,第一行有一条隐式的语句:super();
 * 如果出现子父类后,想子类使用父类中中的构造函数时,用super();调用父类构造函数
 * this();用于调用本类中的构造函数。
 * 
 */


子父类中构造函数的特点-子类实例化过程:
父类中的构造函数
在对子类对象进行初始化时,父类的构造函数也会进行
那是因为子类的构造函数默认第一行有一条隐式的语句super();
super():会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super()

package asa;


class fu{
	fu(){
		System.out.println("fu fun");
	}
}

class zi extends fu{
	zi()
	{
		System.out.println("zi fun");
	}
	zi (int x)
	{
		System.out.println("zi...."+x);
	}
}


public class aaaa {
	public static void main(String [] args)
	{
		zi z=new zi();
		zi z1=new zi(4);
	}
}

/*
 *控制台输出结果:
 * fu fun
zi fun
fu fun
zi....4

 */

package asa;


class fu{
	fu(){
		System.out.println("fu fun");
	}
}

class zi extends fu{
	zi()
	{
		super();
		System.out.println("zi fun");
	}
	zi (int x)
	{
		super();
		System.out.println("zi...."+x);
	}
}


public class aaaa {
	public static void main(String [] args)
	{
		zi z=new zi();
		zi z1=new zi(4);
	}
}

/*
 *控制台输出结果:
 * fu fun
zi fun
fu fun
zi....4

 */

super();就是代表的
class fu{
fu(){
System.out.println("fu fun"); }
}
中的
fun(){
System.out.println("fu fun");

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值