《java入门第一季》之面向对象(接口收尾)

通过案例的形式,结束接口部分。

/*
	猫狗案例,加入跳高的额外功能

	分析:从具体到抽象
		猫:
			姓名,年龄
			吃饭,睡觉
		狗:
			姓名,年龄
			吃饭,睡觉

		由于有共性功能,所以,我们抽取出一个父类:
		动物:
			姓名,年龄
			吃饭();//吃的不一样,定义为抽象方法
			睡觉(){}

		猫:继承自动物
		狗:继承自动物

		跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口
		接口:
			跳高

		部分猫:实现跳高
		部分狗:实现跳高
	实现;
		从抽象到具体,这个具体意思是实现后都是具体内容

	使用:
		使用具体类
*/
//定义跳高接口
interface Jumpping {
	//跳高功能
	public abstract void jump();
}

//定义抽象类
abstract class Animal {
	//姓名
	private String name;
	//年龄
	private int age;

	public Animal() {}

	public Animal(String name,int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	//吃饭();定义为抽象方法
	public abstract void eat();

	//睡觉(){}
	public void sleep() {
		System.out.println("睡觉觉了");
	}
}

//具体猫类

class Cat extends Animal {//猫不具备跳高功能的猫
	public Cat(){}

	public Cat(String name,int age) {
		super(name,age);
	}

	public void eat() {
		System.out.println("猫吃鱼");
	}
}

//具体狗类,同猫
class Dog extends Animal {
	public Dog(){}

	public Dog(String name,int age) {
		super(name,age);
	}

	public void eat() {
		System.out.println("狗吃肉");
	}
}

//有跳高功能的猫,在继承一个类的同时实现接口
class JumpCat extends Cat implements Jumpping {
	public JumpCat() {}

	public JumpCat(String name,int age) {
		super(name,age);
	}

	public void jump() {
		System.out.println("跳高猫");
	}
}

//有跳高功能的狗,在继承一个类的同时实现接口
class JumpDog extends Dog implements Jumpping {
	public JumpDog() {}

	public JumpDog(String name,int age) {
		super(name,age);
	}
	public void jump() {//对接口中的抽象进行重写实现
		System.out.println("跳高狗");
	}
}

class InterfaceTest {
	public static void main(String[] args) {
		//定义跳高猫并测试
		Jumpping jum = new JumpCat();//多态的方式实现
		JumpCat jc = new JumpCat();//自己类对象形式
		jc.setName("哆啦A梦");
		jc.setAge(3);
		System.out.println(jc.getName()+"---"+jc.getAge());
		jc.eat();
		jc.sleep();
		jc.jump();
		jum.jump();//多态的方式,实现了特殊跳高功能
		System.out.println("-----------------");

		JumpCat jc2 = new JumpCat("加菲猫",2);
		System.out.println(jc2.getName()+"---"+jc2.getAge());
		jc2.eat();
		jc2.sleep();
		jc2.jump();

		//定义跳高狗
		Jumpping jum1 = new JumpDog();
		JumpDog jd = new JumpDog();
		jd.setAge(4);
		jd.setName("叶晨");
		System.out.println(jd.getName()+"-----"+jd.getAge());
		jd.eat();
		jd.sleep();
		jd.jump();
		jum1.jump();
		System.out.println("-----------------");

		JumpDog jd1 = new JumpDog("邱加泺",23);//用自己创建对象。
		System.out.println(jd1.getAge()+"------"+jd1.getName());
		jd1.eat();
		jd1.sleep();
		jd1.jump();
	}
}

到目前为止,面向对象部分快要结束了。下一篇(http://blog.csdn.net/qq_32059827/article/details/51338014)将会通过一个小案例对面向对象所有内容以案例的形式进行总结。

时间: 2024-08-02 11:03:50

《java入门第一季》之面向对象(接口收尾)的相关文章

Java入门第一季——从此投身Java??

找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简介 1.1 Java SE--基础核心: 以此为基础,又分为Java EE(企业应用开发,JSP等),Java ME(嵌入式开发,安卓等): JVM(Java Virtual Machine): Java虚拟机,使Java代码可以跨平台运行: .java-->编译器-->.class-->解

《java入门第一季》之面向对象(谈谈接口)

软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的学习: /* 接口的特点: A:接口用关键字interface表示 interface 接口名 {} B:类(实现)接口用implements(执行,实现)表示 class 类名 implements 接口名 {} C:接口不能实例化,就是说不能凭空的创建对象 那么,接口如何实例化呢? 按照多态的方

Java入门第一季

慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Arrays操作数组.foreach循环遍历数组 6.方法的定义,重载调用 跟着慕课网的教程,去一步一步补充完成小练习中的代码,学习效率会比较高~

《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: * A:定义一个字符串 * B:把字符串转换为字符数组 * C:把字符数组进行排序 * D:把排序后的字符数组转成字符串 * E:输出最后的字符串 */ public class ArrayTest { public static void main(String[] args) { // 定义一个字符串 S

《java入门第一季》之面向对象接口面试题

首先,(1)叙述接口的成员特点: /* 接口成员特点 成员变量:只能是常量,默认都是常量,并且是静态的. 默认修饰符:public static final 建议:自己手动给出类似:public static final int num3 = 30;的格式 构造方法:接口没有构造方法. 成员方法:默认只能是抽象方法. 默认修饰符:public abstract 建议:自己手动给出. 用几行代码验证上述特点. */ interface Inter { public int num = 10; pu

《java入门第一季》之面向对象静态内部类和非静态内部类的区别

很感谢在内部类章节,"开心阳"先生给与的建议.使用静态内部类.这里就简单说一下静态内部类的使用. package com.devin; public class MyMain{ private static String name = "woobo"; private String num = "X001"; // 静态内部类可以用public,protected,private修饰 static class Person { // 静态内部类中

《java入门第一季》之面向对象匿名内部类面试题

面试题一: /* 按照要求,补齐代码 interface Inter { void show(); } class Outer { //补齐代码 } class OuterDemo { public static void main(String[] args) { Outer.method().show(); } } 要求在控制台输出"HelloWorld" */ interface Inter { void show(); //接口中的抽象方法,默认格式:public abstra

《java入门第一季》之面向对象(内部类到底在哪里?)

/* 内部类概述: 把类定义在其他类的内部,这个类就被称为内部类. 举例:在类A中定义了一个类B,类B就是内部类. 内部的访问特点: A:内部类可以直接访问外部类的成员,包括私有. B:外部类要访问内部类的成员,必须创建对象. 内部类位置         成员位置:在成员位置定义的类,被称为成员内部类.             局部位置:在局部位置定义的类,被称为局部内部类.  */ 1.成员内部类: /* 成员内部类: 如何直接访问内部类的成员. 外部类名.内部类名 对象名 = 外部类对象.内

《java入门第一季》之面向对象(匿名内部类)

1.认识匿名内部类 /* 匿名内部类 就是内部类的简化写法. 前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类. 匿名内部类的格式: new 类名或者接口名(){ 重写方法; }:这代表的是一个子类对象 本质是什么呢? 是一个继承了该类或者实现了该接口的子类匿名对象. */ interface Inter { public abstract void show(); public abstract void show2(); } class Outer { public void m