------ android培训、java培训、java基础学习技术总结、期待与您交流! ----------
一、抽象类
抽象类与普通类没有什么大的不同,该如何描述事物,就该如何描述事物,
* 只不过该事物出现了一些看不懂的东西这些不确定的部分,也是该事物的功能,需要明确出现,
但是无法定义主体,通过抽象方法表示,抽象类中含有抽象方法,含有抽象方法的类就需要定义
为抽象方法
* 抽象方法的特点
1.抽象方法一定在抽象类中,
* 2.抽象类和抽象方法必须用abstract修饰
* 3.抽象类不可以用new创建一个对象,因为调用抽象方法没意义
* 4.抽象类中的抽象方法要被使用,必须由子类复写抽象方法后,建立子类对象调用。
* 如果子类复写部分抽象方法,那么该子类还是抽象类
二、接口
接口:初期理解,可以理解为特殊的抽象类;
* 当抽象类中的方法都是抽象的,该类可以通过接口的形式来表示;
* class可以用于定义类
* interface用于定义接口
* 接口中定义特点
常量 final
抽象方法
* 接口中都有固定修饰符
常量:public static final
方法:public abstract
* 记住:接口中的成员都是public的
* 接口是不可以创建对象的,因为有抽象方法,
* 需要被子类实现,子类对接口中的所有抽象方法全部覆盖后,子类才可以实例化。
* 否则子类是一个抽象类
* 类继承类是因为父类中含有可以调用的方法,接口中没有一点可以调用的方法,所以用另一种方式
* 继承一个接口
* 接口可以被类多实现
* java中虽然不支持多继承,但是java用另一种方式实现多继承,多实现
* 为什么java可以支持多实现呢,因为接口中没有方法主体,所以子类可以任意定义。
* 一个类在继承一个类的同时,实现多继承。
* 先继承,后实现可以拓展程序的功能
* 类实现接口
* java中支持多继承,但是只是在接口与接口之间
* 接口继承接口
一个类要实现多个接口,绝对不允许出现实现的多个接口中含有返回类型不同的同名函数。
* 接口的特点
1.对外暴露的原则
2.接口是功能的拓展
3.接口可以用来多实现
4.类与接口的实现关系,一个接口可以实现多个接口,接口与接口之间可以有继承
示例1如下:
package com.itcast.study;
interface Inter{
public static final int NUM=3;
public abstract void show();
}
interface InterA{
public abstract void show();
public void method();
}
class Test implements Inter,InterA{
public void show(){
System.out.println("show++++++++++++"+NUM);
}
public void method(){
System.out.println("method+++++++++"+NUM);
}
}
public class InterfaceDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
System.out.println(t.NUM);
System.out.println(Test.NUM);
System.out.println(Inter.NUM);
t.show();
t.method();
}
}
示例2如下:
package com.itcast.study;
interface InterA1{
public abstract void methodA();
}
interface InterB{
public abstract void methodB();
}
interface InterC extends InterA1,InterB{
public abstract void methodC();
}
class InterfaceTest implements InterC{
public void methodC() {
System.out.println("methodC");
}
public void methodA() {
System.out.println("methodA");
}
public void methodB() {
System.out.println("methodB");
}
}
public class InterfaceDemo2 {
public static void main(String[] args) {
InterfaceTest it=new InterfaceTest();
it.methodA();
it.methodB();
it.methodC();
}
}