黑马程序员--面试汇总2(面向对象贴)

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 构造代码块

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

静态代码块

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

对象的初始化过程

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 单例设计模式

 

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

覆盖注意事项:
1、子类覆盖父类,必须保证子类权限大于等于父类权限,
   才可以覆盖,否则编译失败。
 
2、静态只能覆盖静态。

记住:
重载:只看同名函数的参数列表
重写:子父类要一模一样,包括返回值类型。

特殊情况:在多态中,父类方法的返回值类型和子类方法
		  的返回值类型是可以有不同的。但是,这两个
		  参数类型得有关系才行,待续。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 子类的实例化过程

//子类的实例化过程
/*
结论:
子类的所有的构造函数,默认都会访问父类中空参数的
构造函数。因为子类每一个构造函数内的第一行都有一
句隐饰super();

当父类中没有空参数的构造函数时,子类必须手动通过
super语句形式来指定访问父类中的构造函数。

当然:子类的构造函数第一行也可以手动指定this语句
来访问本类中的构造函数,子类中至少会有一个构造函数
会访问父类中的构造函数。

*/


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 模板方法设计模式

/*
需求:获取一段程序运行的时间
原理:获取程序开始和结束的时间并相减即可

获取时间:System.currentTimeMillis();

当代码完成优化后,就可以解决这类问题。

这种方式,叫做模板方法设计模式。

什么是模板方法?
在定义功能时,功能的一部分是确定的,一部分是不确定的,而确定的部分在使用不确定的部分,
那么这时就将不确定的部分暴露出去,由该类的子类去完成。

这种设计模式提高了扩展性,也提高了复用性。
*/

abstract class GetTime
{
	public final void getTime()
	{
		long start = System.currentTimeMillis();
		
		runcode();

		long end = System.currentTimeMillis();

		System.out.println("毫秒:"+(end-start));
	}
	public abstract void runcode();
}

class SubTime extends GetTime
{
	public void runcode()
	{
		long start = System.currentTimeMillis();

		for(int x=0; x<4000;x++)
		{
			System.out.print(x);
		}
	}
}
class  TemplateDemo
{
	public static void main(String[] args) 
	{
//		GetTime gt = new GetTime();
		SubTime gt = new SubTime();
		gt.getTime();
	}
}
 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 多 态

1、

class Fu
{
	static int num = 5;
	void method1()
	{
		System.out.println("fu method_1");
	}
	void method2()
	{
		System.out.println("fu method_2");
	}
}

class Zi extends Fu
{
	int num = 8;
	void method1()
	{
		System.out.println("zi method_1");
	}
	void method3()
	{
		System.out.println("zi method_3");
	}
}
class  DuoTaiDemo
{
	public static void main(String[] args) 
	{
		Fu f = new Zi();
		System.out.println(f.num);

		Zi z = new Zi();
		System.out.println(z.num);
	}
}

结果:5  8

class Fu
{
	static int num = 5;
	void method1()
	{
		System.out.println("fu method_1");
	}
	void method2()
	{
		System.out.println("fu method_2");
	}
	static void method4()
	{
		System.out.println("fu method_4");
	}
}

class Zi extends Fu
{
	static int num = 8;
	void method1()
	{
		System.out.println("zi method_1");
	}
	void method3()
	{
		System.out.println("zi method_3");
	}
	static void method4()
	{
		System.out.println("zi method_4");
	}
}
class  DuoTaiDemo
{
	public static void main(String[] args) 
	{
		Fu f = new Zi();
		f.method4();
	}
}

结果是:fu method_4



----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 接口和多态的综合运用

/*
需求:
电脑运行实例,
电脑运行基于主板。
*/
interface PCI
{
	public void open();
	public void close();
}

class MainBoard
{
	public void run()
	{
		System.out.println("mainboard run");
	}
	public void usePCI(PCI p)//PCI p = new NetCard();
	{						//接口型引用指向自己的子类对象。
		if(p!=null)
		{
			p.open();
		    p.close();
		}
		
	}
}

class NetCard implements PCI
{
	public void open()
	{
		System.out.println("netcard open");
	}
	public void close()
	{
		System.out.println("netcard close");
	}
}

class SoundCard implements PCI
{
	public void open()
	{
		System.out.println("SoundCard open");
	}
	public void close()
	{
		System.out.println("SoundCard close");
	}
}

class	DuoTaiDemo
{
	public static void main(String[] args) 
	{
		MainBoard mb = new MainBoard();
		mb.run();
		mb.usePCI(null);
		mb.usePCI(new NetCard());
		mb.usePCI(new SoundCard());
	}
}


 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值