Java抽象类、继承及多态和适配器的实现代码

Java继承

方法重写是Java语言多态的特性,必须满足以下条件

  • 在子类中,方法名称与父类方法名称完全相同
  • 方法的参数个数和类型完全相同,返回类型完全相同
  • 方法的访问修饰符访问级别不低于父类同名方法的访问级别
  • 在方法上添加@override注释,如果报错说明不是重写

方法重写限制

  • final修饰的父类方法在子类中不能被重写
  • static修饰的父类方法在子类中不能被重写,只能覆盖

super关键字

super关键字和this类似,super修饰的是父类的对象,如super();调用的是父类的默认无参构造器

Java抽象类

抽象类特点

  1. 抽象类通常应包含抽象方法,也可以包含非抽象方法
  2. 抽象类不能使用final关键字修饰
  3. 抽象类自身不能够实例化
  4. 抽象类就是用来被继承的

抽象类的继承

  • 子类必须实现父类所有的抽象方法
  • 如果子类已经override实现父类的抽象方法,间接子类可以不用实现该方法。

适配器

  • 定义一个适配器,类名+Adapator。比如MamalAdapator。继承给父类所有的方法一个空的实现。后面实例的类继承这个适配器,就可以选择性的重写实现部分父类的方法而不会报错。
  • 抽象类只提供一个抽象方法然后供子类去继承和重写override,然后特别是override的这个功能,可以做到比如Dog.eat,Cat.eat,不同的类,有不同的方法实现,但是方法名称都相同,给开发提供了极大的灵活性,后面的程序员接手开发的时候,比如需要再新增Tiger.eat,只需要再写一个Tiger类继承父类再override他的eat方法就可以了。
/**
 * 1 使用Eclipse 工具建立一个普通Java控制台应用程序, 自定义一个类继承Counter 类,
 * 并根据理解定义在Counter类中定义的抽象方法对父类的抽象方法进行实现,体会普通类继承
 * 抽象类必需做什么? 不同子类在继承Counter抽象类并实现抽象方法时的算法和什么有关.
 */

public class Test {
    public static void main(String[] args) {
        //用父类的类型去new一个子类
        Counter cou = new Add();
        //用父类的类型去调用子类的addition方法并实现
        System.out.println("3+9的和是"+cou.addition(3,9));
    }
}
/**
 * 1 使用Eclipse 工具建立一个普通Java控制台应用程序,
 * 自定义一个类继承Counter 类,并根据理解定义在Counter
 * 类中定义的抽象方法对父类的抽象方法进行实现,体会普通类
 * 继承抽象类必需做什么? 不同子类在继承Counter抽象类并
 * 实现抽象方法时的算法和什么有关.
 */

//定义一个抽象的父类Counter
public abstract class Counter {
    //定义一个抽象方法addition
    public abstract int addition(int num1, int num2);

    public Counter(){
        System.out.println("调用Counter父类构造器");
    }
}
/**
 * 1 使用Eclipse 工具建立一个普通Java控制台应用程序,
 * 自定义一个类继承Counter 类,并根据理解定义在Counter类中
 * 定义的抽象方法对父类的抽象方法进行实现,体会普通类继承抽象
 * 类必需做什么? 不同子类在继承Counter抽象类并实现抽象方法
 * 时的算法和什么有关.
 */

public class Add extends Counter{

    int num1 = 0;
    int num2 = 0;

    //重写父类中的加法并实现加法
    @Override
    public int addition(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
        return num1+num2;

    }

    public Add(){
        System.out.println("调用Add子类构造器");
    }
}

-----------------------------------------------分割线--------------------------------------------------------------

/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.test;

import tool.abstracts.Construct;
import tool.abstracts.Tool;
import tool.abstracts.Traffic;
import tool.imp.Car;
import tool.imp.Hammer;

public class Test {
    public static void main(String[] args) {
        //实例化顶级工具类对象,调用其中功能方法
        Tool tool1 = new Traffic() {
            @Override
            public void constructTool() {

            }
        };
        tool1.trafficTool();

        Tool tool2 = new Construct() {
            @Override
            public void trafficTool() {

            }
        };
        tool2.constructTool();

        //实例化特殊工具类对象,调用其中功能方法
        Traffic traffic = new Car();
        traffic.trafficTool();

        Construct construct = new Hammer();
        construct.constructTool();

    }
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.abstracts;

//定义一个tool抽象类
public abstract class Tool {
    //定义一个交通工具抽象方法
    public abstract void trafficTool();
    //定义一个建筑工具抽象方法
    public abstract void constructTool();
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.abstracts;

//定义一个交通工具抽象类继承自工具类
public abstract class Traffic extends Tool {

    public void trafficTool(){
        System.out.println("我是所有交通工具的集合");
    };
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.abstracts;

//定义一个建筑工具抽象类继承自工具类
public abstract class Construct extends Tool {

    public void constructTool(){
        System.out.println("我是所有建筑工具的集合");
    };
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.adaptor;

import tool.abstracts.Construct;

//定义一个Construct的适配器
public class ConstructAdaptor extends Construct {

    //对交通工具方法进行一个重写和空实现
    @Override
    public void trafficTool() {

    }
    //对建筑工具方法进行一个重写和空实现
    @Override
    public void constructTool() {

    }
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.adaptor;

import tool.abstracts.Traffic;

//定义一个Traffic的适配器
public class TrafficAdaptor extends Traffic {

    //对交通工具方法进行一个重写和空实现
    @Override
    public void trafficTool() {
        System.out.println("我是所有交通工具的集合");
    }
    //对建筑工具方法进行一个重写和空实现
    @Override
    public void constructTool() {

    }
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.imp;

import tool.adaptor.TrafficAdaptor;

//定义一个普通类并具体实现交通工具方法
public class Car extends TrafficAdaptor {
    @Override
    public void trafficTool() {
        System.out.println("我是交通工具汽车");
    }
}
/**
 *2 生活中很多东西都可以被人利用从而作为一种工具,这些工具都具备一个共同的功能那就是“用途”,
 * 同时也有很多适合某个领域的工具(如,交通工具,建筑工具等 ),它们也在工具的范畴之内, 也有用
 * 途功能,同时又具备自己的一些领域功能, 人们在使用这些工具时,可以根据实际情况选择哪种具体
 * 类别的工具实体.
 * 根据以上描述,结合本单元知识点,设计工具抽象类定义用途的抽象方法,在此类的基础上定义在此抽
 * 象工具类范畴内的至少2种特殊工具的抽象类并继承上述的工具类 , 再根据实际使用工具的情况定
 * 义更具体的工具类实现对2种特殊工具类其一的继承, 分别实例化顶级工具类及特殊工具类对象,调
 * 用其中功能方法, 理解领悟抽象类之间的继承及实现多层继承的普通类要注意哪些问题.
 *
 * 3 继任务2实现, 当我们在使用继承抽象父类的时候, 我们的本意只是为使用某个抽象类的特定方法,
 * 但是受于普通类继承抽象类的限制,必需实现所有父级抽象类中的所有方法,既使不用那些方法也必需
 * 在子类中提供抽象方法的空实现,如何解决这个问题呢, 请在任务2的基础上编程实现.
 */

package tool.imp;

import tool.adaptor.ConstructAdaptor;

//定义一个普通类并具体实现建筑工具方法
public class Hammer extends ConstructAdaptor {
    @Override
    public void constructTool(){
        System.out.println("我是建筑工具锤子");
    }
}

-----------------------------------分割线-----------------------------------

/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */

package test;

import abstracts.Tool;
import imp.*;

//定义一个主类Test
public class Test {
    public static void main(String[] args) {
        //实例化Person类
        Person per = new Person();
        //通过多态的方式,以父类的类型实例化各个子类
        Tool car = new Car();
        Tool plane = new Plane();
        Tool print = new Printer();
        Tool laptop = new Laptop();

        //调用对应的子类去具体实现抽象方法
        per.useTool(car);
        per.useTool(plane);
        per.useTool(print);
        per.useTool(laptop);
    }
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */

package abstracts;

//定义一个抽象的工具类作为父类
public abstract class Tool {
    //定义一个旅行的抽象方法
    public abstract void travel();

    //定义一个打印的抽象方法
    public abstract void print();

    //定义一个学习的抽象方法
    public abstract void study();
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */
package adaptor;

import abstracts.Tool;

//定义一个适配器,继承工具类并提供3个方法的空实现
public class ToolAdaptor extends Tool {
    @Override
    public void travel() {

    }

    @Override
    public void print() {

    }

    @Override
    public void study() {

    }
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */
package imp;

import adaptor.ToolAdaptor;

//定义一个汽车类继承父类的适配器,重写并具体实现旅行的这个抽象方法
public class Car extends ToolAdaptor {
    @Override
    public void travel() {
        System.out.println("使用汽车旅行");
    }
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */
package imp;

import adaptor.ToolAdaptor;

//定义一个飞机类继承父类的适配器,重写并具体实现旅行的这个抽象方法
public class Plane extends ToolAdaptor {
    @Override
    public void travel(){
        System.out.println("使用飞机旅行");
    }
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */
package imp;

import adaptor.ToolAdaptor;

//定义一个笔记本电脑类继承父类的适配器,重写并具体实现学习的这个抽象方法
public class Laptop extends ToolAdaptor {
    @Override
    public void study(){
        System.out.println("使用笔记本电脑学习Java");
    }
}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */
package imp;

import adaptor.ToolAdaptor;

//定义一个打印机类继承父类的适配器,重写并具体实现打印的这个抽象方法
public class Printer extends ToolAdaptor {
    @Override
    public void print() {
        System.out.println("使用打印机打印文件");
    }

}
/**
 * 4 在生活中,人们都会根据实际情况为完成某项任务而选择利用不同的工具.
 * 如我要旅行,会用到汽车或者飞机,我在打印文件时会用到打印机,我要学习
 * java会用到笔记本电脑, 如何设计一个应用程序定义一个人类并在人类中
 * 定义一个使用工具的方法, 能够让在真正使用工具时, 用什么工具则这个
 * 工具就能够出现在使用工具的过程中,请根据java语言继承及多态的特点
 * 完成此编程任务.
 */

package imp;

import abstracts.Tool;

//定义一个Person类
public class Person {
    //定义一个使用工具的方法,接收tool抽象类的类型,并调用tool抽象类的三个抽象方法
    public void useTool(Tool tool){
        tool.travel();
        tool.print();
        tool.study();
    }
}

以上就是Java抽象类、继承及多态和适配器的实现的详细内容,更多关于java抽象类继承多态的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java基础教程之接口的继承与抽象类

    在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的继承是基于类的.interface接口同样可以继承,以拓展原interface. 接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: 复制代码 代码如下: interface Cup

  • 实例解析Java设计模式编程中的适配器模式使用

    平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类的方法.有一个解决方法是,修改它们各自的接口,但是这是我们最不愿意看到的.这个时候Adapter模式就会派上用场了. Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种.Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口形式. 适配器 模式 有三种方式,一种是对象适配器,一种是类适配器, 一种是接口适配器 以下

  • Java面向对象基础之多态性,抽象类和接口

    一.多态性 多态是指一个对象可以拥有多种不同的形态,继承是实现多态的基础. 1.1 引用多态和方法多态 引用多态:父类引用可以指向本类的对象,也可以指向子类的对象 方法多态: 1.创建本类对象时,调用的方法为本类方法: 2.创建子类对象时,调用的方法为子类重写或继承的方法. 首先建立父类Animal,包含一个eat()方法,如下代码所示: public class Animal { public void eat(){ System.out.println("动物可以吃东西"); }

  • Java中的对象、类、抽象类、接口、继承之间的联系

    正文: 举个例子:如果现在要想定义一个动物,那么动物肯定是一个公共的标准,而这个公共标准就可以通过接口来完成. 在动物中又分为两类:哺乳动物.卵生动物,而这个标准属于对动物的标准进一步细化,应该称为子标准,所以此种关系可以使用接口的继承来表示. 而哺乳动物可以继续划分为人.狗.猫等不同的类型,由于这些类型不表示具体的事物标准,所以可以使用抽象类进行表示. 如果要表示出工人或者学生这样的概念,则肯定是一个具体的定义,则使用类的方式. 然后每个学生或者每个工人都是具体的,那么就通过对象来表示: 由下

  • Java设计模式之适配器模式(Adapter模式)介绍

    适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或者,我们不愿意为了一个应用而修改各自的接口. 怎么办? 使用Adapter,在这两种接口之间创建一个混合接口(混血儿). 如何使用适配器模式 实现Adapter方式,其实"think in Java"的"类再生&quo

  • JAVA 继承基本类、抽象类、接口介绍

    封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色的子类. 这里我就不多讲解,下面我主要说明一个继承.继承是OOP(面向对象)的一个特色,java只支持单继承(如果继承两个有同样方法的父类,那么就不知道继承到那个父类的,所以java只支持单继承).继承是java的一个特色,我们用的所以类都继承Objict类,所以就要Object类的方法,如toString().getClass().wait()--所以我们建立的类都有父类. J

  • Java抽象类、继承及多态和适配器的实现代码

    Java继承 方法重写是Java语言多态的特性,必须满足以下条件 在子类中,方法名称与父类方法名称完全相同 方法的参数个数和类型完全相同,返回类型完全相同 方法的访问修饰符访问级别不低于父类同名方法的访问级别 在方法上添加@override注释,如果报错说明不是重写 方法重写限制 final修饰的父类方法在子类中不能被重写 static修饰的父类方法在子类中不能被重写,只能覆盖 super关键字 super关键字和this类似,super修饰的是父类的对象,如super();调用的是父类的默认无

  • java面向对象继承与多态介绍

    目录 一.概述 二.继承 2.1 继承的概述 2.2 继承机制 2.3 类中属性,方法的继承与覆盖 2.4 super 关键字 三. 多态 总结 一.概述 面向对象程序设计的三大原则是封装性,继承性和多态性.继承性是子类自动共享父类的数据和方法的机制,它是由类的派生功能体现的.继承具有传递性,使得一个类可以继承另一个类的属性和方法,这样通过抽象出共同的属性和方法组件新的类,便于代码的重用.而多态是指不同类型的对象接收相同的消息时产生不同的行为,这里的消息主要是对类成员函数的调用,而不同的行为是指

  • java子类继承父类实例-披萨的选择实现代码

    编写程序实现比萨制作.需求说明编写程序,接收用户输入的信息,选择需要制作的比萨.可供选择的比萨有:培根比萨和海鲜比萨. 实现思路及关键代码 1)分析培根比萨和海鲜比萨 2)定义比萨类 3)属性:名称.价格.大小 4)方法:展示 5)定义培根比萨和海鲜比萨继承自比萨类 6)定义比萨工厂类,根据输入信息产生具体的比萨对象 Pizza.java package zuoye; import java.util.Scanner; //父类 public class Pizza { String name;

  • Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果

  • java 中继承和多态详细介绍

    继承和多态 一.this super关键字 1.this: 可以在构造器中的第一代码中调用本类中的其他构造器.this(参数) 非类方法参数中隐式传入的参数,表示调用当前方法的对象. 2.super: 可以在构造器的第一句代码调用父类的构造器.super(参数). 非静态方法中表示继承的父类对象,可以调用父类方法和属性. 二.方法的覆写: 子类重新实现了和父类一样的方法.访问修饰和异常都必须至少和父类的相同或者更大的范围. 三.方法的重载: 相同的方法的名字不同的参数列表. 四.多态: java

  • Java单例模式继承覆盖多态原理详解

    1.单例模式: 1)提出原因 是由gof 也就是四人组提出来的.为了保证jvm中某一类型的java对象永远只有一个,同时也是为了节省内存的开销.因为外面程序可以通过new的方法直接调用类里面的构造方法.导致该类的对象不止一个. 2)定义 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. A.构造方法私有化: B.对外提供一个公开的.静态的.获取当前类型对象的方法 C.提供一个当前类型的静态变量. 3)分类 A.饿汉式单例

  • Java类和成员上的一些方法实例代码

    isInstance和isAssignableFrom obj instanceof Class 判断obj是不是Class或者Class的子类的实例 clazz.isInstance(obj) 判断obj能不能强制转换成clazz类型,亦即obj是不是clazz或者clazz的子类的实例 clazz1.isAssignableFrom(clazz2) 如果clazz2和clazz1相同,或者clazz1是clazz2的父类则返回True,否则返回Flase static class Paren

  • 浅谈java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访问父类中的非私有的属性和行为. 通过 extends 关键字让类与类之间产生继承关系. class SubDemo extends Demo{} //SubDemo是子类,Demo是父类 继承有什么好处? •提高代码的复用性. •让类与类之间产生了关系,是多态的前提. 继承的特点 1.Java只支

  • Java中的封装、继承和多态,你真的都懂了吗

    封装 所谓的封装就是把类的属性和方法使用private修饰,不允许类的调用者直接访问,我们定义如下一个类,可以看到所有的成员变量和成员方法都使用private修饰了,我们现在来使用一下这个类. 当我们使用的时候编译器给出了下面这样的报错. 告诉我们说是private访问控制,那么这是什么意思呢?我们来看看另外一张图,那么这张图代表这什么呢?在看这张图之前,我们先来看看四者都提到的包,那么包又是什么呢,包可以简单理解为一个文件夹,把类放到放到包里面,也就相当于是专门的文件夹里面,这不是我们说的重点

  • Java十分钟精通多态与抽象类的使用与原理

    我们知道Java的三大特性:封装.继承.多态.前两个之前在Java入门(六)已经讲到,现在来讲多态这个特性. 什么是多态? 多态顾名思义即为多种形态的意思 Java中多态的含义: 发送消息给某个对象,让这个对象自行决定采用哪种行为响应这个消息 子类对象的引用赋值给父类引用变量来实现动态的方法调用 Java中形成多态的前提: 继承 父类方法的重写 向上转型 我对多态的解释: 比如我们,是人,也是学生,也是年轻人,我可以用人的身份去做事情,也可以用学生的身份去买学生票,也可以用年轻人的身份做公益,这

随机推荐