接口(interface):一个完全抽象的类,抽象类的抽象类
接口中只存在 抽象方法和全局静态常量
普通类可以继承普通类
普通类可以继承抽象类
普通类可以实现接口
抽象类可以继承普通类
抽象类可以继承抽象类
抽象类实现接口
接口可以继承接口
接口可以实现接口
接口可以多继承接口
接口和抽象类的共同点
约束子类 提供模板
成员内部类
静态内部
方法内部类
匿名内部类
单例
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
1. 编写程序描述兔子和青蛙
需求说明:使用面向对象的思想,设计自定义类描述兔子和青蛙。
实现思路及关键代码
1) 分析兔子和青蛙的共性
2) 根据共性,定义抽象的动物类
属性:名字、颜色、类别(哺乳类、非哺乳类)
方法:吃饭,发出叫声
3) 根据青蛙泳 抽象游泳的接口
方法:游泳
4) 定义兔子继承动物类,青蛙继承动物同时实现游泳接口
package com.zy;
/**
* 动物类
* @author Administrator
*
*/
public abstract class Animal {
String name;
String color;
String type;
public abstract void eat();
public abstract void shout();
}
package com.zy;
/**
* 兔子类
*
* @author Administrator
*
*/
public class Rabbit extends Animal {
@Override
public void eat() {
System.out.println("吃草");
}
@Override
public void shout() {
System.out.println("唧唧");
}
}
package com.zy;
/**
* 青蛙
* @author Administrator
*
*/
public class Frog extends Animal implements Swimming{
@Override
public void swim() {
}
@Override
public void eat() {
}
@Override
public void shout() {
}
}
1. 编写程序描述影视歌三栖艺人
需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
实现思路及关键代码
1) 分析影视歌三栖艺人的特性
a) 可以演电影
b) 可以演电视剧
c) 可以唱歌
2) 定义多个接口描述特性
a) 演电影的接口-----方法:演电影
b) 演电视剧的接口-----方法:演电视剧
c) 唱歌的接口-----方法:唱歌
3) 定义艺人类实现多个接口
package com.zy;
public interface Sing {
public void song();
}
package com.zy;
public interface Actor {
public void show();
}
package com.zy;
public interface Tv {
void tvShow();
}
package com.zy;
public class Person implements Sing,Tv,Actor{
@Override
public void show() {
// TODO Auto-generated method stub
}
@Override
public void tvShow() {
// TODO Auto-generated method stub
}
@Override
public void song() {
// TODO Auto-generated method stub
}
}
1) 方法声明为public void sortArr(Object arr[]){ }
2) 方法中首先输出排序前数组内容,然后进行排序,最后输出排序后数组内容。
3) 可以是冒泡排序或其他算法实现,不直接调用Java提供的方法实现排序。
思路:任意类实现Comparable接口来实现该引用数据类型的元素排序,在sort()方法中将Object强转成Comparable实现两个对象的比较。
package com.zy;
/**
* 排序类(自定义对象的比较和排序)
*
* @author Administrator
*
*/
public class Sort implements Comparable
1. 实现不同引用类型对象的大小比较
需求说明:学生类,新闻类,商品类虽然是完全不同的类,但是都具有比较的能力,比如可以比较两个学生的大小,但需要指定比较的依据是学号、姓名还是成绩等。
实现思路及关键代码:
将比较的能力定义为接口,让学生、新闻、商品类都实现该接口。
1) 定义接口Comparable,其中包含唯一的方法int compareTo(Object obj);返回值>0,表示大于,返回值=0,表示等于,返回值<0,表示小于。
2) 定义学生类,包括学号、姓名、年龄和分数,实现Comparable接口,按照分数倒序排列;
3) 定义新闻类,包括编号(int类型)、标题、内容和点击数,实现Comparable接口,按照编号正序排列;
4) 定义测试类,分别创建两个学生对象、新闻对象,进行比较并输出结果。
package com.zy;
public interface Com {
int comTo(T o);
}
package com.zy;
public class Stu implements Com {
double score;
@Override
public int comTo(Stu o) {
if (score > o.score) {
return 1;
} else if (score < o.score) {
return -1;
}
return 0;
}
}
package com.zy;
public class News implements Com {
int nno;
@Override
public int comTo(News o) {
if (nno > o.nno) {
return 1;
} else if (nno < o.nno) {
return -1;
}
return 0;
}
}
package com.zy;
public class Test {
public static void main(String[] args) {
Stu s1 = new Stu();
s1.score=99;
Stu s2 = new Stu();
s2.score=99;
int i = s1.comTo(s2);
System.out.println(i);
}
}