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] = ...
随机推荐
- npm 配置国内淘宝镜像
淘宝NPM镜像官网:http://npm.taobao.org/ npm config set registry=http://registry.npm.taobao.org -g 安装cnpm: n ...
- 《Web安全攻防 渗透测试实战指南》 学习笔记(一)
Web安全攻防 渗透测试实战指南 学习笔记 (一) 第一章 信息收集 在信息收集中,最重要是收集服务器的配置信息和网站敏感信息(域名及子域名信息目标网站系统.CMS指纹.目标网站真实I ...
- PHP弱类型(一)
如图,id的值必须满足上述表达式,才能返回想要的值 与运算,只要出现false,整个表达式返回false 看见后面的==就想尝试一下弱类型绕过,参考资料:https://www.cnblogs.com ...
- 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用正则化
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...
- MQTT 浏览器 mqttws31.min.js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于编译QT官方的MQTT库.
先放一位博主的资料,参阅了其中资料,表示感谢: https://www.cnblogs.com/yexiaopeng/p/8542894.html ########################## ...
- 并发队列之ArrayBlockingQueue
上一篇我们说了并发队列中的LinkedBlockingQueue队列,这次我们看看ArrayBlockingQueue,看看名字,我们想象一下LinkedList和ArrayList的区别,我们可以知 ...
- Python 爬取 热词并进行分类数据分析-[JSP演示+页面跳转]
日期:2020.02.03 博客期:142 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:为所有表格的单元格添加边框
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- jvm学习:类的加载、连接、初始化、常量
类在jvm中有这几个过程类的加载.连接.初始化.使用.卸载 类的加载 类的加载是将class文件中的二进制数据加载到内存中,将其放在运行时的数据区:方法区内,然后在内存中创建一个 java.lang. ...