美文网首页
2019-03-12多态、抽象、接口

2019-03-12多态、抽象、接口

作者: 果冻_4c9b | 来源:发表于2019-04-21 14:37 被阅读0次

多态

  • 多态(一种事物不同形态,对同一消息不同响应):是一种编程的策略

1.要有泛化(继承,实现)关系
2.要有上溯造型,父类引用指向子类对象
3.要方法的重写
优点:解耦合(拓展性强,易维护)

    int id;
    String name;
    public void buy(TrainStation ts) {}
}
public class Student  extends Customer{
    public Student() {}
    public Student(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    @Override
    public void buy(TrainStation ts) {
        System.out.println(name+"是一个学员,打五折,收费"+ts.price*0.5);
    }
}
public class Criminal extends Customer{
    public Criminal() {}
    public Criminal(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    @Override
    public void buy(TrainStation ts) {
        System.out.println(name+"是一个罪犯,打骨折");
    }
}
public class Teacher extends Customer{
    public Teacher() {}
    public Teacher(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    @Override
    public void buy(TrainStation ts) {
        System.out.println(name+"是一个讲师,打八折,收费"+ts.price*0.8);
    }
}
public class TrainStation {
    int price = 100;
    public void saleTicket(Customer c) {
        TrainStation ts1 = this;
        c.buy(ts1);
    }
}
public class Test {
    public static void main(String[] args) {
        Customer s = new Student(1001, "小翟");
        Customer t = new Teacher(9527, "大翟");
        Customer c = new Criminal(1011011, "老翟");
        Customer e = new Employee(1, "老翟1111");
        
        TrainStation ts = new TrainStation();
        ts.saleTicket(s);
        ts.saleTicket(t);
        ts.saleTicket(c);
        ts.saleTicket(e);
    }
}
  • 在Java中的体现:

重载------编译时多态
重写------运行时多态

接口

接口(interface):弥补单继承的
接口中只能定义
1.常量 存在默认public static final
2.抽象方法 public abstract
3.意义提供方法

public interface News {
    // 发布新闻
    void releaseNews();
}
/**
 * 体育板块
 * @author Administrator
 */
public class Sports implements News{
    @Override
    public void releaseNews() {
        System.out.println("发布了一条体育新闻");
    }
}
/**
 * 娱乐板块
 * @author Administrator
 */
public class Entertainment  implements News{
    public void releaseNews() {
        System.out.println("发布了一条娱乐新闻");
    }
}
/**
 * 政治板块
 * @author Administrator
 */
public class Polity implements News{
    @Override
    public void releaseNews() {
        System.out.println("发布了一条政治新闻");
    }
}
public class TestDemo1 {
    public static void main(String[] args) {
        while(true) {
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入要发布的新闻类型");
            System.out.println("1--------体育新闻");
            System.out.println("2--------政治新闻");
            System.out.println("3--------娱乐新闻");
            System.out.println("4----------退出");
            int num = scan.nextInt();
            // 上溯
            News n = null;
            if(num < 1 || num > 4) {
                System.out.println("无此选项");
            }else {
                switch(num) {
                    case 1:
                        n = new Sports();
                        break;
                    case 2:
                        n = new Polity();
                        break;
                    case 3:
                        n = new Entertainment();
                        break;
                    case 4:
                        System.out.println("再见");
                        return;
                }
                n.releaseNews();
            }
        }
    }
}

接口与抽象类

接口:不能实例化,也没有构造器,只能有常量和抽象方法 ,多实现
抽象类:不能实例化,有构造器,可以有非抽象方法,变量
类与类单继承
类与接口是多实现
接口与接口多继承(接口不能实现任何)

接口使用问题;

1.如果一个类使用一个以上的接口,接口不能同名同参

总结:

多态:解耦(拓展性强,意维护 )

1.要有泛化关系(继承,实现)
2.上溯造型
3.方法重写

final:可以修饰类(不能被继承)方法(不能被重写)属性(运行不能被改变)
abstract:抽象方法没有方法体,一个类中有抽象方法,这个类是抽象类
一个类继承抽象类,必须实现父类的所有抽象方法
2. 抽象类:不能实例化(不能创建对象)
3. 接口: 不能实例化(不能创建对象)

final

能修饰,方法,属性(常量)
final类不能被继承
final方法不可以被重写
final 属性常量不可以改变

abstract 抽象

可以修饰的类和方法
抽象类不能实例化(不成创建对象,但是有构造器),可以作为父类出现
抽象方法,没有方法体({}),如果一个类中有抽象方法,这个类必须是抽象类
抽象类可以写非抽象方法
如果一个类继承了一个抽象类,就必须实现父类所有抽象方法,除非这个子类也是抽象类
*/
String str
str.equals 在if中相当于 ==

相关文章

  • 2019-03-12多态、抽象、接口

    多态 多态(一种事物不同形态,对同一消息不同响应):是一种编程的策略 1.要有泛化(继承,实现)关系2.要有上溯造...

  • java面向对象,多态,抽象,接口

    day09笔记【java面向对象,多态,抽象,接口】 1 多态的概述及其代码体现 A:多态(polymorphic...

  • java抽象类和接口小记

    Java抽象类和接口小记 Java抽象类和接口实现了java的多态.多态是面向对象程序语言的核心,在项目开发过程中...

  • 芦继超10.27总结

    今天老师讲了多态,抽象类,和接口,多态和抽象类还是挺好理解的,之后的接口没太懂,不会用,下午助教老师又讲了一下,收...

  • 17.03.11 .Net基础(二)

    多态 虚方法 virtual override 抽象类 abstract override 接口 interfac...

  • 11-面向对象

    内容介绍: 接口多态 1. 接口 1.1 接口概念 接口是功能的集合,同样可看做事一种数据类型,是比抽象类更为抽象...

  • Spring的学习

    接口和抽象类? 抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。1....

  • JAVA面向对象-day04

    A 抽象类 接口 多态(意义) 强制转型 instanceof关键字 匿名内部类

  • P11 Dart 抽象类 多态 和 接口

    1.抽象类2.多态3.接口 //抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口//1.通过abs...

  • 文本查询程序

    //面向对象的核心是,抽象继承多态。抽象把数据实现隐藏,暴露公共接口继承和多态,派生类继承基类,降低代码重复性,通...

网友评论

      本文标题:2019-03-12多态、抽象、接口

      本文链接:https://www.haomeiwen.com/subject/sxxjgqtx.html