任何一个领域,取得一点点的成绩
都需要不止三五个月的持续努力
其实这是好事
任何能快速掌握的技能,都没有什么竞争力
Java的抽象类(abstract class)
随着继承层次中一个个子类的定义,类也变得越具体,而父类则更一般,更通用,类的设计应该保证父类和子类能够共享特征,有时将父类设计的更加抽象,以至于它没有具体的实例,这样的类叫做抽象类。
抽象类特征:
- 抽象类不能实例化对象,必须被继承
- 抽象类的成员变量,成员方法,构造方法的访问方式与普通类是一样的
- 一个类只能继承一个抽象类
- 类方法(用static修饰的方法),构造方法(方法名与类名相同,无返回值)
复制代码
如何定义抽象类
在Java语言中,用abstract class
定义一个抽象类
package AbstractDemo1;
/*
* 创建一个抽象Teachers父类
* 含有3个成员变量,1个构造方法,
* 7个成员方法
*/
public abstract class Teachers {
private String name;
private String weChat;
private String course;
public Teachers(String name,String weChat,String course){
System.out.println("建立一个Teachers构造方法");
this.name=name;
this.weChat=weChat;
this.course=course;
}
public void show() {
System.out.println("该老师教授的课程为:"+course);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWeChat() {
return weChat;
}
public void setWeChat(String weChat) {
this.weChat = weChat;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
}
复制代码
package AbstractDemo1;
//创建一个JavaTeacher类
public class JavaTeacher extends Teachers {
public JavaTeacher(String name, String weChat, String course) {
super(name, weChat, course);
// TODO Auto-generated constructor stub
}
}
public class AbstractDemo {
public static void main(String[] args) {
//发生错误,由于抽象类不能继承对象
//Teachers t=new Teachers("tom","lyk1234",".net");
//应采用继承抽象类的方式使用
JavaTeacher jt=new JavaTeacher("John","lhy4567","Java");
jt.show();
}
}
复制代码
输出结果
建立一个Teachers构造方法
该老师教授的课程为:Java
抽象方法
用<访问修饰符> abstract <方法名>
定义,抽象方法只有方法名,没有方法体,方法名括号后面直接为分号,而不是花括号。
public abstract class Animals{
private String name;
private int age;
//声明一个abstract类型的方法eat
pubic abstract void eat();
}
public class Cat extends Animals{
//若Cat类继承了Animals类,那么必须实现eat方法
public abstract void eat(){
System.out.println("我可以吃");
}
}
复制代码
- 注意事项
- 如果一个类包含抽象方法,那么该类必须是抽象类
- 子类必须重写抽象类的抽象方法,或者声明自身为抽象类
一天又这么过去了,考研还是工作有一点点小迷茫,都已经四月份了