对昨天安排的事情的总结,首先,关于Spring和JDBC的学习没有展开,晚上对于时间的安排能力还是太弱。
再谈一下今天的收获,今天新增了一个方立勋的javaweb十天教程,相信到时候能够成为自己的助力,好,接下来展开今天的学习总结。
今天的学习主要集中在程序功能的扩展性,其中包括,1.抽象类 2.接口 3.对象的特性,多态。
先开始讲抽象,下面展开讲它的特点:
1.抽象方法一定在抽象类中
2.抽象方法和抽象类必须被abstract修饰
3.抽象类不可以用new创建,因为没意义
4.抽象类中的抽象方法要被使用,必须由子类复写起所有抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
那么抽象的有点就是,子类必须复写。
糅合着抽象,还学习了模板方法模式,先说明一下获取时间的方法 System.currentTimeMillis();
下面贴一段代码
/*
需求:完成一个用来获取系统运行时间的小程序,注意使用抽象类!
思路:运用模板方法方式,定义一个类,暴露可写部分,同时定义一个子类,用来写入可写部分,然后父类调用子类。最后调用的仍应该是父类
步骤:
1.定义一个父类,运用System.currentTimeMillis();来获取程序运行时间,定义一个空对象,用来给子类复写
2.定义子类,用来写入可写部分
3.调用
*/
abstract class GetTime
{
public final void getTime()//注意final的出现,为了不被调用
{
long start = System.currentTimeMillis();
runcode();
long end = System.currentTimeMillis();
System.out.println("Time="+(end-start)+"毫秒");
}
public abstract void runcode();
/*for(int x=0;x<1000;x++)
{
System.out.print(x);
}
*/
}
class SubTime extends GetTime
{
public void runcode()
{
for(int x=0;x<1000;x++)
{
System.out.print(x);
}
}
}
class Demo
{
public static void main(String[] args)
{
SubTime gt = new SubTime();
gt.getTime();
}
}
注意到,其中类 GetTime被抽象类中的抽象函数调用,而类中抽象函数又被非抽象部分调用,最后主函数调用非抽象部分,完成运算。
该段代码的有点体现在GetTime部分,程序修改起来非常方便,不需要在抽象类中进行修改。
接着讲接口。(在这里没有打代码,就纯文字描述了,后期再补上)
初期理解,可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示
class用于定义类,interface用于定义接口
接口定义时,格式特点:1.接口中常见定义:常量、抽象方法 2.接口中的成员都有固定修饰符(常量:public static final 方法:public abstract 接口中所有成员都是public的)
接口是不可以创建对象的,因为有抽象方法。需要被子类实现(implements),子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类
一个类可以实现多个接口,也叫多实现,类也可以继承一个类的同时实现多个接口
接口之间可以完成多继承,接口可以理解为扩展功能,但不是必备(为方便理解 继承 is-a 接口 like-a)
还学习了多态,不过还没有学习完。
多态:可以理解为事物存在的多种体现形态。
1.多态的体现:父类的引用指向了自己的子类对象,父类的引用也可以接收自己的子类对象
2.多态的前提:必须是类与类之间有关系,要么继承,要么实现。
3.多态的好处:多态的出现大大地提高了程序的扩展性
4.多态的弊端:提高了扩展性,但是只能使用父类中的成员
5.多态的应用:见下列源代码
/*
运用方法:多态的使用,提高程序的复用性
需求:杭州电子科技大学有很多学院,每个学院都有自己的名称,同时对应显示自己有几个班
*/
abstract class Hdu
{
public abstract void num();
}
class economic extends Hdu
{
public void num()
{
int n=7;
System.out.println("经济学院");
System.out.println("班级数量="+n);
}
}
class doHdu
{
public void dosome(Hdu name)
{
name.num();
}
}
class duotaiDemo
{
public static void main(String[] args)
{
doHdu a = new doHdu();
a.dosome (new economic());
}
}
6.多态的代码中的特点(多态使用的注意事项)
(1)成员函数在多态调用时,编译看左边,运行看右边
(2)在多态中,成员变量的特点:无论编译和运行,都参考左边。
知识的回顾就到这里,总结下今天的学习。
对于自己学习的内容,略显生涩的部分,请一定要记得自己敲代码,一方面是为了加深理解,更重要的是为了复习的时候能够加深印象。
好,就这些,晚安。