抽象类:
语法规则:
抽象类前使用abstract关键字类修饰,则该类为抽象类。
应用场景:
a:在某些情况下,某个父类只知道子类应该包含怎样的方法,但无法准确知道子类怎么实现这些方法。也就是说抽象类只关注子类必须有哪些方法,而并不关注子类怎样去实现。
b:从多个具有相同特征的子类中抽象出一个类的模板,从而避免了子类设计的随意性。
作用:
限制子类必须有那些方法,但不关注子类怎样去实现。
使用规则:
使用abstract类修饰类
使用abstract关键字类修饰抽象方法,但自己并不需要去实现
包含抽象方法的类是抽象类
抽象类中可以包含普通的方法,也可以没有抽象方法
抽象类不能直接创建,但能定义引用变量
样例代码:
抽象父类:
package com.imooc;
public abstract class Graph {
public abstract void area();
public abstract void perimeter();
}
子类1:
package com.imooc;
public class Circle extends Graph
{
int r = 3;
@Override
public void area() {
// TODO Auto-generated method stub
System.out.println("The area of the circle is:" + Math.PI*Math.pow(r, 2));
}
@Override
public void perimeter() {
// TODO Auto-generated method stub
System.out.println("The perimeter of the circle is:" + 2*Math.PI*r);
}
}
子类2:
package com.imooc;
public class Rectangle extends Graph {
int l = 10;
int k = 20;
@Override
public void area() {
// TODO Auto-generated method stub
System.out.println("The area of the Rectangle is:" + l*k);
}
@Override
public void perimeter() {
// TODO Auto-generated method stub
System.out.println("The perimeter of the Rectangle is:" + 2*(l+k));
}
}
测试类:
package com.imooc;
public class Initial {
public static void main(String[] args) {
// TODO Auto-generated method stub
Graph obj1 = new Circle();
obj1.area();
obj1.perimeter();
Graph obj2 = new Rectangle();
obj2.area();
obj2.perimeter();
}
}
运行结果:
大学还是要坚持多学一点东西才行啊~