java中的抽象类

abstract class PlaneGraphics //平面类,抽象类
{
    private String shape; //形状
   //构造方法,有参数
    public PlaneGraphics(String shape)
    {
        this.shape=shape;
    }
 //无参数,构造方法
    public PlaneGraphics()
    {
        this("未知图形");
    }
    //抽象方法
    public abstract double area();
    //非抽象方法,显示面积
    public void print()
    {
        System.out.println(this.shape+"面积为:"+this.area());
    }
    
    }
//长方形类,继承平面类
class Rectangle extends PlaneGraphics
{
    protected double length; //长
    protected double width; //宽
    //有参数的构造方法
    public Rectangle(double length,double width)
    {
        this.length=length;
        this.width=width;
    }
    //正方形构造方法
    public Rectangle(double width)
    {
        super("正方形");
        this.width=width;
        this.length=width;
        
    }
    //无参数构造方法
    public Rectangle()
    {
        
    }
    //计算长方形的构造方法,实现父类的抽象方法
    public double area()
    {
        return width*length;
    }
    
    }
//设计椭圆类,继承平面类
class Eclipse extends PlaneGraphics
{
    protected double radius_a;  //a轴半径
    protected double radius_b;
    //构造方法
    public Eclipse(double radius_a,double radius_b)
    {
        this.radius_a=radius_a;
        this.radius_b=radius_b;
    }
    //圆的构造方法
    public Eclipse(double radius_a)
    {
        super("圆形:");
        this.radius_a=radius_a;
        this.radius_b=radius_a;
                
    }
    //无参数构造方法
    public Eclipse()
    {
        
    }
    //计算椭圆的面积
    public double area()
    {
        return Math.PI*radius_a*radius_b;
    }
    }

public class PlaneGraphics_ex {
    public static void main(String[]args)
    {
        PlaneGraphics g=new Rectangle(10,20);
        g.print();
        g=new Rectangle(10); //正方形
        g.print();
        g=new Rectangle(); //未知图形方法
        g.print();
        g=new Eclipse(10,20); //椭圆
        g.print();
        g=new Eclipse(10); //圆
        g.print();
        g=new Eclipse(); //圆形形状未知
        g.print();
    }

}

1.抽象类中只包括抽象方法,方法的声明。而方法的具体的实现是由其子类实现的。

2.抽象类不能实例化,不能基于抽象类来创建新的对象。

3.抽象类中可以包含成员变量和成员方法,但是抽象方法只能出现抽象类,不能出现在其他的类中。

时间: 2024-10-12 10:21:28

java中的抽象类的相关文章

JAVA中的抽象类和接口

一 抽象类 抽象类就是不能被实例化的类,即不可以用new运算符创建本类的对象.在实际应用中,抽象类应该具有子类,且其子类一般不为抽象类. java中使用抽象类的原因有如下四点: 1.抽象类是较高层次的概括,其他的类可以继承它的抽象化特征: 2.抽象类包括它的所有子类共享的公共行为和公共属性,即抽象类中定义一些属性和方法,其他类继承该抽象类并实现这些属性和方法: 3.抽象类使编写程序更贴近人类的思维方式和客观世界: 4.在用户生成实例时强迫用户生成更具体的实例,保证代码的安全性. 二 接口 在接口

Java读书笔记十四(java中的抽象类)

前言 在java中,有时候需要对类的行为进行提取,因此也就有了抽象类和接口的概念,这篇博客,小编来剖一下java中的抽象类和接口.  抽象方法和抽象类 抽象方法和抽象类的规则如下: 1.抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽线方法不能有方法体 2.抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例.即使抽象类里不可包含抽象方法,这个抽象类也不能被创建实例. 3.抽象类可以包含成员变量.方法(普通方法和抽象方法都可以

Java 中的抽象类及接口

抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,避免子类设计的随意性. 抽象类的使用规则: 1.使用 abstract 定义抽象对象: 2.abstract 定义抽象方法,只有声明,不需要实现: 3.包含抽象方法的类是抽象类: 4.抽象类中可以包含普通的方法,也可以没有抽象方法: 5.抽象类不能直接创建,可以定义

黑马程序员————java中的抽象类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 抽象类集中的体现了java面向对象的特性,对于每一种事物通过五个方面:属性,方法,构造器,代码块,内部类,来重新解构再进行组装,然后将类似的事物归为一类,这是面向对象的思想.java中常说万物皆对象,那么很显然我们可以进一步的将其中的方法

java中的抽象类(abstract)

抽象类的概念 抽象这个词说白了就是看不懂,毕加索的画一般都是被称为抽象的.在java里面可以使用关键字abstract修饰- -个类,这样的类被称为抽象类, abstract修 饰的方法叫做抽象方法.抽象类或抽象方法-般也是看不懂的,因为里面可能根本就没有代码. 抽象类的特点 ■抽象类无法被实例化,无法创建抽象类的对象.●虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的.这也算是多态的一种.■抽象类中不- -定有抽象方法,但抽象方法必须出现在抽象类中.抽象类中的子

java中的抽象类与接口

抽象类: 用关键字abstract(位于class关键字之前的任何位置)修饰的类叫做抽象类,抽象类不能被实例化,即不能new出来一个抽象类的对象(实例). 对于关键字abstract---->可选修饰符(static.final.abstract)一般可以共存,但abstract与static.final都不能同时共存(理解其的真正含义) 抽象方法: 用abstract关键字所修饰的方法叫做抽象方法. 抽象方法必须定义在抽象类中. 抽象方法有声明,无实现(没有花括号{},有花括号但是内容为空也是

《Java中的抽象类及抽象类的作用》

1 //抽象类示例: 2 abstract class Shape1 3 { 4 { 5 System.out.println("执行Shape的初始化块..."); 6 } 7 private String color; 8 //定义一个计算周长的抽象方法, 9 public abstract double calPerimeter(); 10 //定义一个返回形状的抽象方法, 11 public abstract String getType(); 12 //定义Shape的构造器

java中的抽象类和抽象方法

abstract修饰抽象类和抽象方法. 包含抽象方法的类只能定义成抽象类,但是抽象类中可以没有抽象方法. 抽象方法没有方法体.只能由子类提供实现(重写). 抽象类只能被继承,final修饰的类不能被继承,所以abstract和final不能共存. 抽象方法如下所示: public abstract class Sharp//抽象类 { private String color; public abstract String getType();//抽象方法 public abstract dou

java 中的抽象类

在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象.从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象.甚至,可以只给出方法的定义而不实现,由子类根据具体需求来具体实现. 这种只给出方法定义而不具体实现的方法被称为抽象方法abstract,抽象方法是没有方法体的(没有{}),在代码的表达上就是没有"{}".包含一个或多个抽象方法的类也必须被声明为抽象类.使用 abstract 修饰符来表示抽象方法和抽象类.抽象