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

class Person {
// 实例属性
int age;
String name;
// 类属性
static int v = 1; // 构造器
public Person() {}
// 构造器重载
public Person(int age, String name) {
this.age = age;
this.name = name;
}
// 实例方法
public void tell_age() {
System.out.println(this.age);
}
// 方法重载
public void tell_age(String s) {
System.out.println(this.age + " " + s);
} // 类方法
public static void print_v() {
System.out.println(v);
}
} // 类的继承
// 继承可以继承除了private的一切方法和属性
// Object是Java的顶级父类
class Man extends Person {
// 方法覆盖
@Override
public void tell_age() {
super.tell_age(); // 执行父类的此方法
System.out.print("Man eat...");
}
}

接口

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();

interface Animal {
public void eat();
public void sleep();
public void play();
} interface Fish extends Animal {
public void swim();
} class AFish implements Fish {
@Override
public void swim() { }
@Override
public void sleep() { }
@Override
public void play() { }
@Override
public void eat() { }
}
// 当然,一个类也可以实现多个interface 彼此之间用逗号隔开:
// class ClassA implements interfaceA, interfaceB, interfaceC {
//
// }

多态

public class Demo {
public static void main(String[] args) {
Cat c = new Cat();
// Java 多态 一个方法有多种状态
Animal cat = new Cat();
Animal dog = new Dog();
cat.eat(); // cat eat ...
cat.sleep(); // cat sleep...
dog.eat(); // dog eat ...
dog.sleep(); // dog sleep...
Person p = new Person();
p.care(cat);
p.care(dog);
}
} interface Animal {
public void eat();
public void sleep();
} class Cat implements Animal {
@Override
public void eat() {
System.out.println("cat eat...");
}
@Override
public void sleep() {
System.out.println("cat sleep...");
}
} class Dog implements Animal {
@Override
public void eat() {
System.out.println("dog eat...");
}
@Override
public void sleep() {
System.out.println("dog sleep...");
}
} class Person {
public void care(Animal a) {
a.sleep();
a.eat();
}
}

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

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. python opencv:绘图 基本图形

    参数说明 • img:你想要绘制图形的那幅图像. • color:形状的颜色.以 RGB 为例,需要传入一个元组,例如:( 255,0,0)代表蓝色.对于灰度图只需要传入灰度值. • thicknes ...

  2. numpy.eye() 生成对角矩阵

    numpy.eye(N,M=None, k=0, dtype=<type 'float'>) 关注第一个第三个参数就行了 第一个参数:输出方阵(行数=列数)的规模,即行数或列数 第三个参数 ...

  3. 【原】 python中? : 三元表达式的使用介绍

    python 三元表达式 之前学习的Python提到了对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有 ...

  4. 7-10 多项式A除以B (25分)(多项式除法)

    7-10 多项式A除以B (25分)   这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出 ...

  5. Update(stage3):第1节 redis组件:10、redis集群

    10.redis集群 1.redis集群的介绍 Redis 集群是一个提供在多个Redis节点之间共享数据的程序集. Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间 ...

  6. Suffix Tree(后缀树)

    这篇简单的谈谈后缀树原理及实现. 如前缀树原理一般,后缀trie树是将字符串的每个后缀使用trie树的算法来构造.例如banana的所有后缀: 0: banana 1: anana 2: nana 3 ...

  7. python学习 —— 获取系统运行情况信息并在Linux下设置定时运行python脚本

    代码: # -*- coding:utf-8 -*- from psutil import * def cpu_usage_rate(): for i, j in zip(range(1, cpu_c ...

  8. Wcf托管在IIS中,HttpContext.Current为空

    config中需要配置 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 另需要在服务类上加 ...

  9. The property does not exist in XML namespace

    自定义依赖属性,绑定在xaml文件中,无问题. 但是编译失败,报 The property does not exist in XML namespace 错误. 发现如果依赖属性定义在本程序集中,在 ...

  10. leetcode刷题-- 4. 贪心

    贪心 455分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼 ...