抽象类(abstract)与接口(interface)

用abstract修饰的类就是抽象类
抽象类存在的几个必要条件
1)必须用abstract 修饰类
2 )类中要有抽象方法
3)要有构造函数(可写可不写,系统会默认生成一个不带参数的构造函数)
4)抽象类和抽象方法不能用final修饰,因为抽象类是子类来继承的,抽象方法是子类继承后来根据实际需要来重写的
注释:有抽象方法的类一定就是抽象类。如果子类中没有实现父类中的抽象方法,在子类中还应该继续把该方法定义为抽象方法

package network.com;

import org.junit.Test;

public abstract class Country {
private String country;
private String color;
private String continent;
private String area;
public  abstract  void Contient(String continent,String country);
public abstract void Area( String  area,String country);
//final abstract void hehe();//不能用final修饰抽象方法
public static void main(String[] args) {//这里我是把主函数写抽闲类中的,,,,我们往下看接口时可不可以这样子写
    Country ch=new china();//这里就是一个典型的多态的应用,父类指向子类的引用
    ch.Contient("亚洲","中国" );
    ch.Area("960万平方公里", "中国");
    Country Am=new china();
    Am.Contient("北美洲","美国");
    Am.Area("962.909万平方公里", "美国");
    }   
}
class  china extends Country{//继承父类Country
    @Override//重写实现父类中Contient()的抽象方法
    public void Contient(String continent,String coutry) {
        System.out.println(coutry+"位于"+continent);
    }
    @Override//重写实现父类中Area()的抽象方法
    public void Area(String  area,String  country) {
        System.out.println(country+"国土面积为:"+area);
    }
}

显示如下

中国位于亚洲
中国国土面积为:960万平方公里
美国位于北美洲
美国国土面积为:962.909万平方公里

接口(interface)
接口和抽象类其实是一样的原理的,都实现了抽象方法,简化了代码的操作性,使得代码有了具有更强的条理性和约束性
但是;;;;;
接口与抽象类是有区别的,而且在实用中大多数是用接口实现的
1)接口中只能定义常量和抽象方法
2)接口中没有构造函数这一说法,也就没有构造函数
3)接口用interface 修饰,接口中的抽象方法用public abstract 修饰 接口中的变量用public static final修饰
4)接口的抽象方法只能用继承类来实现,使用implement关键字修饰,接口之间可以继承,但不能实现接口中的方法,如果一个类实现了一个接口,那么该接口中的所有方法都要实现
5)一个类只能继承一个抽象类,但一个类却可以实现多个接口,间接的实现了多继承,同时接口之间也可以实现多多继承
代码实例

> /**
 * 定义一个接口里面定义了常量和抽象方法
 */
public interface Country {
public static final  int HEIGHT=16;//定义常量
public static final int WIDTH=20;
public abstract  void country(String country ,String are);//定义抽象方法
public abstract void  are(String country,String continent);
} 
/**
 * 定义一个接口里面只写抽象方法
  */
public interface House {
 public abstract void  address(String add);
 public abstract double income(int perso,float average_income );
}
/**
 * 定义一个类实现多个接口
 */
public class Person  implements House,Country{//多接口的实现
    @Override
    public void country(String country, String are) {//对于接口中的抽象方法一一实现(重写)
        System.out.println(country+"国土面积为:"+are);
    }
    @Override
    public void are(String country, String continent) {
        System.out.println(country+"位于"+continent);
    }
    @Override
    public void address(String add) {
        System.out.println("首都是"+add);
    }
    @Override
    public double income(int perso,float average_income) {
        return perso*average_income;
    }
}
/**
 * 测试类
 */
public class Test01 {
        public static void main(String [] args){
            Person people=new Person();//初始化实例对象
            people.are("中国", "亚洲");//调用重写后的方法
            people.address("北京");
            people.country("中国", "960万平方公里");
            double income=people.income(5, 10000);
            System.out.println("家庭年输入为:"+income);
        }

}

显示结果
中国位于亚洲
首都是北京
中国国土面积为:960万平方公里
家庭年输入为:50000.0

这里我只是将抽象类与接口做了一个简单的初始化介绍,对于接口的应用在实际编程中可谓每时每刻都会用到,根据实际问题找出对应解决办法才是编程的艺术,菜鸟冒昧了 望大神们多多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值