「java定义简单抽象类」怎么定义抽象类JAVA

博主:adminadmin 2022-11-29 13:22:09 51

今天给各位分享java定义简单抽象类的知识,其中也会对怎么定义抽象类JAVA进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 抽象类定义

package baiduwenti;

abstract class MyAnimal {//抽象类

private String type;

MyAnimal(String str){//构造方法

type = str;

}

public abstract void voice();//抽象方法

}

class MyDog extends MyAnimal{//MyDog继承MyAnimal

private String name;

MyDog(String str,String n) {//构造方法

super(str);

name = n;

// TODO Auto-generated constructor stub

}

public void voice(){//实现抽象类中的抽象方法

System.out.println("the voice of a dog.");

}

}

class MyCat extends MyAnimal{

private String name;

MyCat(String str,String n){

super(str);

name = n;

}

public void voice(){

System.out.println("the voice of cat.");

}

}

public class Cx3110{

public static void main(String[] args){

MyAnimal dog = new MyDog("狗","旺财");//创建一个MyAnimal对象,并用MyDog实例化

dog.voice();//调用方法

MyAnimal cat = new MyCat("猫","旺运");//创建一个MyAnimal对象,并用MyCat实例化

cat.voice();

}

}

java编程抽象类技术如何实现?

java编程一直以来都是互联网上使用比较广泛的一种编程语言,所以我们今天就一起来了解一下java编程中的抽象类是如何来实现的,希望通过对本文的阅读,大家能够对java编程技术有更深刻的认识,下面昆明电脑培训就开始今天的主要内容吧。

AbstractMap抽象类实现了一些简单且通用的方法,本身并不难。但在这个抽象类中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范。

抽象类通常作为一种骨架实现,为各自子类实现公共的方法。上一篇我们讲解了Map接口,此篇对AbstractMap抽象类进行剖析研究。

Java中Map类型的数据结构有相当多,AbstractMap作为它们的骨架实现实现了Map接口部分方法,也就是说为它的子类各种Map提供了公共的方法,没有实现的方法各种Map可能有所不同。

抽象类不能通过new关键字直接创建抽象类的实例,但它可以有构造方法。AbstractMap提供了一个protected修饰的无参构造方法,意味着只有它的子类才能访问(当然它本身就是一个抽象类,其他类也不能直接对其实例化),也就是说只有它的子类才能调用这个无参的构造方法。

在Map接口中其内部定义了一个Entry接口,这个接口是Map映射的内部实现用于维护一个key-value键值对,key-value存储在这个Map.Entry中。AbstractMap对这个内部接口进行了实现,一共有两个:一个是可变的SimpleEntry和一个是不可变的SimpleImmutableEntry。

publicstaticclassSimpleEntryimplementsEntry,java.io.Serializable

实现了Map.Entry接口,并且实现了Serializable(可被序列化)。

它的方法比较简单都是取值存值的操作,对于key值的定义是一个final修饰意味着是一个不可变的引用。另外其setValue方法稍微特殊,存入value值返回的并不是存入的值,而是返回的以前的旧值。需要重点学习的是它重写的equals和hashCode方法。

publicstaticclassSimpleImmutableEntryimplementsEntry,java.io.SerializableSimpleImmutableEntry

定义为不可变的Entry,其实是事实不可变,因为它不提供setValue方法,在多个线程同时访问时自然不能通过setValue方法进行修改。它相比于SimpleEntry其key和value成员变量都被定义为了final类型。调用setValue方法将会抛出UnsupportedOperationException异常。

它的equals和hashCode方法和SimpleEntry一致。

接下来查看AbstractMap抽象类实现了哪些Map接口中的方法。

publicintsize()

Map中定义了一个entrySet方法,返回的是Map.Entry的Set集合,直接调用Set集合的size方法即是Map的大小。

publicbooleanisEmpty()

调用上面的size方法,等于0即为空。

publicbooleancontainsKey(Objectkey)

这个方法的实现较为简单,通过调用entrySet方法获取Set集合的迭代器遍历Map.Entry,与参数key比较。Map可以存储为null的key值,由于key=null在Map中存储比较特殊(不能计算hashCode值),所以在这里也做了判断参数key是否为空。

JAVA 中 定义抽象类---

public abstract class Account { public String id;

public String name;

public int balance; public Account(String id, String name) { this.id = id;

this.name = name;

balance = 0;

} public abstract int ShowAccount();

}

Java怎么构建抽象类,抽象类的概念是什么?

可以使用abstract来修饰一个类或者方法。

用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。

抽象类不能被实例化

抽象方法是只有方法声明,而没有方法的实现的方法。

抽象类里面并非一定需要抽象方法,但是没有抽象方法,抽象类就没有存在的必要

在以下任一条件成立时,类必须定义成抽象类:

类中有至少一个抽象方法

类继承了父类中的抽象方法,但是至少有一个抽象方法没有实现

类实现了某个接口,但没有全部实现接口中的方法

public abstract class Shapes

{

/**

*得出周长

*/

public abstract double perimeter();

/**

*得到形状

*/

public abstract String getType();

}

public class ShapeTriangle extends Shapes

{

protected double a,b,c;

… …

/**

*实现父类中的抽象方法

*/

public double perimeter()

{

return a+b+c;

}

public String getType()

{

return "三角形";

}

}

JAVA中的抽象类

抽象是java的特性之一,也是处理对象复杂性的一种技术!它是指只关注对象的重要细节,忽略次要细节!

在抽象类中定义的抽象方法,是由子类去实现,而不是去覆盖,因为在父类中没有具体的实现!

举一个例子:

父类:

abstract

class

MyClass

{

abstract

void

display(String

str);

}

子类:

abstract

class

MyChild

extends

MyClass

{

void

display(String

str)

{

.....

}

void

method1()

{

....

}

void

method2()

{

....

}

........

}

这个时候我需要用到display方法,其他的都不用!我们可以这样做:

MyClass

mc

=

new

MyChild();

mc.display();

我们声明的是一个父类类型的引用,只需要记住父类中有这个方法的声明,不用管它子类怎么去实现,而且看都不用看method1,method2...我们可以把精力都集中在父类!如果只有一个单纯的子类,很可能需要去看他的其他方法,尤其是当display与其他方法有关联的时候!有了这样一个抽象的父类,就可以省去这些精力,只需要知道父类有这个方法就行了!(或许这些在小程序中体现得并不很明显)

以上都是个人的理解,有不对的地方,还希望大家指正!

关于java定义简单抽象类和怎么定义抽象类JAVA的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。