「java编程抽象训练」java怎么实现抽象方法

博主:adminadmin 2022-12-02 23:42:07 88

本篇文章给大家谈谈java编程抽象训练,以及java怎么实现抽象方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java简单习题抽象

public class AnimalTest {

public static void main(String[] args) {

Animal p = new Parrot();

p.name = "鹦鹉";

zoo z = new zoo();

System.out.println(z.free(p));

Animal t = new Tortoise();

t.name = "乌龟";

System.out.println(z.free(t));

}

}

class Animal{

public String name;

public String move(){

return "行走";

}

}

class Parrot extends Animal{

public String move(){

return "飞行";

}

}

class Tortoise extends Animal{

public String move(){

return "爬行";

}

}

class zoo{

public String free(Animal a){

return a.name + "正在"+a.move();

}

}

Java练习抽象类

package JavaBaiduThree;

//抽象类Driver

public abstract class Driver {

private String gender;

private int age;

public Driver(String gender,int age){

this.setGender(gender);

this.setAge(age);

}

abstract void drives(Vehicle v);

//通过方法在后面调用时进行获取值

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

package JavaBaiduThree;

//抽象类Vehicle

public abstract class Vehicle {

private String type;

private int id;

public Vehicle(String type,int id){

this.setType(type);

this.setId(id);

}

abstract void drivedByDriver(Driver who);

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

}

package JavaBaiduThree;

//抽象类Driver的子类FemaleDriver

public class FemaleDriver extends Driver{

public FemaleDriver(String gender,int age){

super(gender, age);

}

void drives(Vehicle v){

System.out.println("A female drives a "+v.getType()+",id is "+v.getId()+".");

}

}

package JavaBaiduThree;

//抽象类Driver的子类MaleDriver

public class MaleDriver extends Driver{

MaleDriver(String gender,int age){

super(gender,age);

}

void drives(Vehicle v){

System.out.println("A man drives a "+v.getType()+" "+v.getId()+".");

}

}

package JavaBaiduThree;

//抽象类Vehicle的子类Bus

public class Bus extends Vehicle{

Bus(String type,int id){

super(type,id);

}

void drivedByDriver(Driver who){

System.out.println("A "+who.getGender()+" "+who.getAge()+" years old "+" drives Bus.");

}

}

package JavaBaiduThree;

//抽象类Vehicle的子类Car

public class Car extends Vehicle{

Car(String type,int id){

super(type,id);

}

void drivedByDriver(Driver who){

System.out.println("A "+who.getGender()+" "+who.getAge()+" years old "+" drives a car.");

}

}

package JavaBaiduThree

public class TestDemo {

public static void main(String[] args){

FemaleDriver fd=new FemaleDriver("female",26);

MaleDriver md=new MaleDriver("male",28);

Bus vb=new Bus("Bus",001);

Car vc=new Car("Car",002);

fd.drives(vc);

md.drives(vb);

vb.drivedByDriver(md);

vc.drivedByDriver(fd);

}

}

不知道能不能看得懂,我也是刚刚开始学……

北大青鸟java培训: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抽象能力

编程中抽象的能力,严格来说跟java没有关系,抽象的能力是一种面向对象的思维方式。如果要考察抽象的能力,实际上就是考察编程时,面向对象的思维方式。所谓面向抽象编程,就是指在思考问题的时候,把问题按照类或者变化或者别的什么,抽象成一个抽象类或者接口,而后编写程序时,面对这些抽象或者接口编程。

关于java编程抽象训练和java怎么实现抽象方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

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