Java面向对象之类、接口、多态
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,类似于swift的protocal
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面向对象之类、接口、多态的更多相关文章
- JavaSE入门学习21:Java面向对象之接口(interface)(二)
一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- Java 面向对象之接口、多态
01接口的概念 A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 ...
- Java面向对象(接口、多态)
面向对象 今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的 ...
- JAVA 面向对象中的多态
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
- JavaSE入门学习20:Java面向对象之接口(interface)(一)
一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...
- Java面向对象(二) 接口、多态和泛型
一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...
- Java面向对象㈡ -- 继承与多态
Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...
- java面向对象--继承与多态
可以为一个变异单元中的每个类创建一个main方法,只有命令行所调用的那个类的main方法才会被调用,这样方便进行单元测试.继承时,一般将所有的数据成员都指定为private,将所有的方法指定为publ ...
- Java面向对象程序设计--接口和内部类
1.接口的定义: In the Java programming language, an interface is not a class but staff[0] = ...
随机推荐
- python opencv:绘图 基本图形
参数说明 • img:你想要绘制图形的那幅图像. • color:形状的颜色.以 RGB 为例,需要传入一个元组,例如:( 255,0,0)代表蓝色.对于灰度图只需要传入灰度值. • thicknes ...
- numpy.eye() 生成对角矩阵
numpy.eye(N,M=None, k=0, dtype=<type 'float'>) 关注第一个第三个参数就行了 第一个参数:输出方阵(行数=列数)的规模,即行数或列数 第三个参数 ...
- 【原】 python中? : 三元表达式的使用介绍
python 三元表达式 之前学习的Python提到了对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有 ...
- 7-10 多项式A除以B (25分)(多项式除法)
7-10 多项式A除以B (25分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出 ...
- Update(stage3):第1节 redis组件:10、redis集群
10.redis集群 1.redis集群的介绍 Redis 集群是一个提供在多个Redis节点之间共享数据的程序集. Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间 ...
- Suffix Tree(后缀树)
这篇简单的谈谈后缀树原理及实现. 如前缀树原理一般,后缀trie树是将字符串的每个后缀使用trie树的算法来构造.例如banana的所有后缀: 0: banana 1: anana 2: nana 3 ...
- python学习 —— 获取系统运行情况信息并在Linux下设置定时运行python脚本
代码: # -*- coding:utf-8 -*- from psutil import * def cpu_usage_rate(): for i, j in zip(range(1, cpu_c ...
- Wcf托管在IIS中,HttpContext.Current为空
config中需要配置 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 另需要在服务类上加 ...
- The property does not exist in XML namespace
自定义依赖属性,绑定在xaml文件中,无问题. 但是编译失败,报 The property does not exist in XML namespace 错误. 发现如果依赖属性定义在本程序集中,在 ...
- leetcode刷题-- 4. 贪心
贪心 455分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼 ...