黑马程序员-----Java基础-----抽象类

来源:互联网 发布:误删数据库怎么恢复 编辑:程序博客网 时间:2024/06/05 05:57
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

当多各类中出现相同功能,但是功能主题不同,
这是可以进行向上抽取,这时,只抽取功能定义,而不抽取功能主题。
抽象:看不懂


抽象类特点:
1,抽象方法 一定定义在抽象类中,
2,抽象方法抽象类都必须被abstract 关键字修饰。
3,抽象类不可以用new 创建对象,因为调用抽象方法没意义。
4,抽象类中的方法要被使用,必须由子类复写其所有抽象方法后,建立子类调用,
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。


抽象类和一般类没有太大的不同
该如何描述事物,就如何描述,只不过,该事物出现了一些看不懂的东西
这些不确定的部分,也是该事物的功能,需要明确出现,但是无法定义主题。
通过抽象方来法表示;

抽象类比一般类多个抽象函数。就是在类中定义抽象方法。
抽象类不可以实例化。

特殊;抽象类中可以不定义抽象方法,这样做仅仅是不让改类建立对象。

 //class Student
abstract class Student
{
// void study();
abstract void study();
{
System.out.println("study");
}
}


class BaseStudent extends Student
{
void study()
{
System.out.println("base study");
}
}


class AdvStudent   extends Student
{
void study()
{
System.out.println("adv study");
}
}


public class AbstractDemo {

public static void main(String[] args) {

}
}


//练习 员工,姓名 工号 工资 经理继承员工,还有奖金。还有各自工作行为
class Worker
{
private String name;
private String ID;
private double pay;
Worker(String name, String ID, double pay)
{
this.name = name;
this.ID = ID;
this.pay = pay;

}
public abstract void woked();
}
class Man   extends  Worker
{
private int jjn;
Man(String name, String ID, double pay,int jjn)
{
super(name, ID, pay);
this.jjn = jjn;

}
public void woked()
{
System.out.println("jingli");
}
}


//获取一段程序运行时间,程序开始结束时间相减。System中system。currentTimeMillis();


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

runtime();

long end = System.currentTimeMillis();

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

}
class SubTime extends GetTime
{
public void runtime()
{
for(int x = 0 ; x < 4000 ;x++)
{
System.out.print(x);
}
}
}


class B
{
public static void main(String []args)
{

SubTime gt = new SubTime();
gt.getTime();
}
}


当代码完成优化后,就可以解决一类问题,这种方式,模板方法设计模式
什么是模板方法呢:
在定义功能时,功能的一部分是确定的,
但是有一部分是不确定的,而且确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类
去完成


0 0
原创粉丝点击