package demo2;
//抽象类
/**
* 抽象方法指的是没有写方法内部的实现的的方法
* 使用abstract修饰的类,就是抽象类
* 使用abstract修饰的方法 就是抽象方法
* 抽象类不能够进行实例化 new抽象类();
* 里面的成员变量和成员方法都是和普通类一样,只不过就是不能进行实例化
* 当一个普通的类 继承这个抽象类之后 那么这个普通类必须重写这个抽象类当中所有的抽象方法
* 抽象类存在的最大意义就是为了被继承
* 抽象类也可以发生向上转型 进一步发生多态
* 当一个抽象类a 继承了 抽象类b 此时抽象类a可以不重写冲向类b当中的方法
* 当普通的类c继承了a 此时就得重写所有的抽象方法
* final不能修饰抽象方法和抽象类
* 抽象方法也不能是private的
* 抽象类当中不能是private的
* 抽象类当中不一定有抽象方法
* 但是如果这个方法是抽象方法 那么这个类就一定是抽象类
*/
abstract class Shape{
public String name;
public int age;
public void func(){
System.out.println("fafa");
}
public static void func2(){
System.out.println("dafa");
}
public abstract void draw();//抽象方法
}
class Cycle extends Shape{
//子类继承抽象的父类的话需要重写抽象父类所有的抽象方法
@Override
public void draw() {
System.out.println("○");
}
}
//重写父类的抽象方法
class B extends A{
@Override
public void draw() {
}
@Override
public void func() {
}
}
class Rect extends Shape{
@Override
public void draw() {
System.out.println("◇");
}
}
class Triangle extends Shape{
@Override
public void draw() {
System.out.println("△");
}
}
public class TestDemo {
//向上转型
public static void drawMap(Shape shape) {
shape.draw();
}
public static void main(String[] args) {
//抽象类不能实例化
//Shape shape = new Shape();
//抽象类也可以发生向上转型 进一步发生多态
Cycle cycle = new Cycle();
//Rect rect = new Rect();
drawMap(cycle);
}
}
抽象类的一些基础使用方法 适合零基础java使用
最新推荐文章于 2022-06-24 23:43:01 发布