Java面向对象之类、接口、多态

  1. class Person {
  2. // 实例属性
  3. int age;
  4. String name;
  5. // 类属性
  6. static int v = 1;
  7. // 构造器
  8. public Person() {}
  9. // 构造器重载
  10. public Person(int age, String name) {
  11. this.age = age;
  12. this.name = name;
  13. }
  14. // 实例方法
  15. public void tell_age() {
  16. System.out.println(this.age);
  17. }
  18. // 方法重载
  19. public void tell_age(String s) {
  20. System.out.println(this.age + " " + s);
  21. }
  22. // 类方法
  23. public static void print_v() {
  24. System.out.println(v);
  25. }
  26. }
  27. // 类的继承
  28. // 继承可以继承除了private的一切方法和属性
  29. // Object是Java的顶级父类
  30. class Man extends Person {
  31. // 方法覆盖
  32. @Override
  33. public void tell_age() {
  34. super.tell_age(); // 执行父类的此方法
  35. System.out.print("Man eat...");
  36. }
  37. }

接口

interface,类似于swiftprotocal

interface中的变量都是默认public static final修饰的

interface中的方法都是默认public abstract修饰的

注意点:

  这些修饰词可以省略一个,也可以省略多个(甚至都省略),但是不能用其他修饰词修饰.

  不写public 不是默认的 default;写default会报错

变量:

   public static final int MAX_LENGTH = 1000;

   final int MAX_LENGTH = 1000;

   static int MAX_LENGTH = 1000;

   public int MAX_LENGTH = 1000;

   int MAX_LENGTH = 1000;

方法:

   public abstract void method();

   public void method();

   abstract void method();

   void method();

  1. interface Animal {
  2. public void eat();
  3. public void sleep();
  4. public void play();
  5. }
  6. interface Fish extends Animal {
  7. public void swim();
  8. }
  9. class AFish implements Fish {
  10. @Override
  11. public void swim() {
  12. }
  13. @Override
  14. public void sleep() {
  15. }
  16. @Override
  17. public void play() {
  18. }
  19. @Override
  20. public void eat() {
  21. }
  22. }
  23. // 当然,一个类也可以实现多个interface 彼此之间用逗号隔开:
  24. // class ClassA implements interfaceA, interfaceB, interfaceC {
  25. //
  26. // }

多态

  1. public class Demo {
  2. public static void main(String[] args) {
  3. Cat c = new Cat();
  4. // Java 多态 一个方法有多种状态
  5. Animal cat = new Cat();
  6. Animal dog = new Dog();
  7. cat.eat(); // cat eat ...
  8. cat.sleep(); // cat sleep...
  9. dog.eat(); // dog eat ...
  10. dog.sleep(); // dog sleep...
  11. Person p = new Person();
  12. p.care(cat);
  13. p.care(dog);
  14. }
  15. }
  16. interface Animal {
  17. public void eat();
  18. public void sleep();
  19. }
  20. class Cat implements Animal {
  21. @Override
  22. public void eat() {
  23. System.out.println("cat eat...");
  24. }
  25. @Override
  26. public void sleep() {
  27. System.out.println("cat sleep...");
  28. }
  29. }
  30. class Dog implements Animal {
  31. @Override
  32. public void eat() {
  33. System.out.println("dog eat...");
  34. }
  35. @Override
  36. public void sleep() {
  37. System.out.println("dog sleep...");
  38. }
  39. }
  40. class Person {
  41. public void care(Animal a) {
  42. a.sleep();
  43. a.eat();
  44. }
  45. }

多态使程序更加具有扩展性:向上类型转化、方法的动态绑定

Java面向对象之类、接口、多态的更多相关文章

  1. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  2. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  3. Java 面向对象之接口、多态

    01接口的概念 A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 ...

  4. Java面向对象(接口、多态)

    面向对象 今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的 ...

  5. JAVA 面向对象中的多态

    多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...

  6. JavaSE入门学习20:Java面向对象之接口(interface)(一)

    一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...

  7. Java面向对象(二) 接口、多态和泛型

    一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...

  8. Java面向对象㈡ -- 继承与多态

    Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...

  9. java面向对象--继承与多态

    可以为一个变异单元中的每个类创建一个main方法,只有命令行所调用的那个类的main方法才会被调用,这样方便进行单元测试.继承时,一般将所有的数据成员都指定为private,将所有的方法指定为publ ...

  10. Java面向对象程序设计--接口和内部类

    1.接口的定义: In the Java programming language, an interface is not a class but          staff[0] =       ...

随机推荐

  1. retrying 模块

    我们在写爬虫的过程中,经常遇到爬取失败的情况,这个时候我们一般会通过 try 块去进行重试,但是每次都写那么一堆 try 块,真的是太麻烦了,所以今天就来说一个比较 pythonic 的模块,retr ...

  2. MySQL优化2.索引

    什么是索引: 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 建立索引合适的列 经常用作where条件的列,order by排序的列 数据列不重复而且并不是唯一的几个值 不被经常 ...

  3. HDU 4699 Editor(模拟 对顶栈)

    题目大意: 给定一个整数序列 维护5种操作 次数<1e6 I x: 光标位置插入x 然后光标位于x之后 D: 删除光标前一个数 L: 光标左移 R: 光标右移 Q k: 询问位置k之前的最大前缀 ...

  4. 【PAT甲级】1062 Talent and Virtue (25 分)

    题意: 输入三个正整数N,L,H(N<=1E5,L>=60,H<100,H>L),分别代表人数,及格线和高水平线.接着输入N行数据,每行包括一个人的ID,道德数值和才能数值.一 ...

  5. 请高手解释这个C#程序,其中ServiceBase是windows服务基类,SmsService是

    请高手解释这个C#程序,其中ServiceBase是windows服务基类,SmsService是 ServiceBase的子类. static void Main() { ServiceBase[] ...

  6. Nginx安装部署!

    安装Nginx方法一:利用u盘导入Nginx软件包 二nginx -t 用于检测配置文件语法 如下报错1:配置文件43行出现错误 [root@www ~]# nginx -tnginx: [emerg ...

  7. Root密码忘记修改方式!

    方法一:进入单用户: Linux系统开机进入引导画面,选择:CentOS Linux(3.10.0-693.e17.x86_64)7 (Core)   ,按字母 "E"键,进入Li ...

  8. linux压缩包管理

    1.gzip 文件 ----> .gz格式的压缩包 2.bzip2 文件 ----> .bz2格式的压缩包 3.tar -- 不使用z/j参数 该命令只能对文件或目录打包 参数: c -- ...

  9. HTML、HTML5重难点

    一.XHTML与HTML的区别 文档结构 XHTML DOCTYPE 是强制性的 <html>中的 XML namespace 属性是强制性的 <html>.<head& ...

  10. vue学习笔记:vue的认识与特点与获取

    Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...