「java编程抽象训练」java怎么实现抽象方法
本篇文章给大家谈谈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怎么实现抽象方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-02,除非注明,否则均为
原创文章,转载请注明出处。