1、抽象类
(1)抽象方法
回想:public static void main(String[] args){
花括号里面的内容 就是函数体。
}
定义:抽象方法是一种特殊的方法,只有声明,没有函数体。
声明如下:
abstract void function();
(2)抽象类是含有抽象方法的类。就叫做抽象类。
abstract class 类名{
成员属性;
成员方法;
}---抽象类
(3)注意点:
a、抽象类中不一定含有抽象方法 但是抽象方法一定在抽象类中。
b、抽象方法和抽象类必须被 abstract 修饰
c、抽象类不可以直接实例化,只能被子类实现;
d、 abstract 不能和final并列使用。
e、抽象方法必须为 public 或 protected 修饰,不能为private
//static
2.定义一个抽像类和抽象方法
package com.Itstar.Demo14;
/***
* 声明一个抽象类和抽象方法
* @author jingqi
* @version 1.0
*
*/
public abstract class Printer {
private String name;
private String type;
public Printer() {
}
public Printer(String name,String type) {
this.name = name;
this.type = type;
}
//声明一个抽象方法
public abstract void print();
//声明一个自检方法
public abstract void check();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
* 抽象类不能用final来修饰 抽象方法也不能被final修饰
* 因为被final修饰后 抽象类和抽象方法将无法使用
* 即抽象类无法继承
* 抽象方法无法重写
抽象类的继承和抽象方法的实现
public class HPprinter extends Printer{
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("惠普打打印机正在打印...........");
}
@Override
public void check() {
// TODO Auto-generated method stub
System.out.println("惠普打打印机正在自检...........");
}
}
写一个测试类来验证
public class AbstractTest01 {
public static void main(String[] args) {
HPprinter hPprinter = new HPprinter(); //实例化一个对象
hPprinter.check(); //调用check方法
hPprinter.print(); //调用print方法
}
}
结果如下
惠普打打印机正在自检...........
惠普打打印机正在打印...........
Java方法的重写
1.目前的问题:父类的功能无法满足子类的需求。2.方法重写的前提: 必须要存在继承的关系。3.方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。4.什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。5.方法重写要注意的事项:1.方法重写时, 方法名与形参列表必须一致。2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。3.方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。 Exception(最坏) RuntimeException(小坏)6.方法的重载:在一个类中 存在两个或者两个 以上的同名函数,称作为方法重载。7.方法重载的要求
函数名要一致。
形参列表不一致(形参的个数或形参 的类型不一致)
与返回值类型无关。---------------------