java学习之day06-接口知识点和程序代码

1.JAVA支持数据类型有哪些?什么是自动拆装箱?
答:(1)总共有种:byte ,char,int,double,float,boolean,short,long (2)自动装箱:基本数据类型和对应的对象封装类之间的一种转换,如int转换成integer,而自动拆箱则相反。
2.接口和抽象类的区别什么?
答:(1)接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法
(2)类可以实现很多个接口,但是只能继承一个抽象类
(3)类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
(4)抽象类可以在不提供接口方法实现的情况下实现接口。
(5)Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
(6)Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
(7)接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
3,接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
答:接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类,前提是实体类必须要有明确的构造方法
4.抽象类可以有构造方法吗?
答:抽象类可以有构造方法,只是不能直接创建抽象类的实例而已,在继承了抽象类的子类中通过super()方法调用抽象类中的构造方法
5.java抽象类可以实现接口吗?它们需要实现所有的方法吗?
答:可以,抽象类可以通过使用关键字implements来实现接口。因为它们是抽象的,所以它们不需要实现所有的方法。
6.java抽象类可以是final吗?
答:不能吗,因为抽象类是被子类继承而使用的,而final修饰的类是不可以被继承的
7.java抽象类可以有static方法吗?
答:可以,但是很少会有这样做的,因为java中的static方法是不可以被重载的。
8.可以创建抽象类的实例吗?
答:不可以,你不能创建Java抽象类的实例,它们是不完全的。即使你的抽象类不包含任何抽象方法,你也不能对它实例化。
9.抽象类必须有抽象方法吗?
答:不是的,只要使用abstract声明的类就是抽象类。
10.何时选用抽象类而不是接口?
答:当关心升级时,因为不可能在一个发布的接口中添加一个新方法,用抽象类会更好。类似地,如果你的接口中有很多方法,你对它们的实现感到很头疼,考虑提供一个抽象类作为默认实现。
程序题:
package 接口使用;
interface Shape{
public abstract void Perimeter();
public abstract void Area();
}
class Rect implements Shape{
private int length;
private int wide;
public void Area(){
System.out.println("长方形长为:"+this.length+"宽为:"+this.wide+"面积为:"+this.length*this.wide);
}
public void Perimeter(){
System.out.println("长方形长为:"+this.length+"宽为:"+this.wide+"周长为:"+(2*this.length+2*this.wide));
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getWide() {
return wide;
}
public void setWide(int wide) {
this.wide = wide;
}
public Rect(int length,int wide){
setLength(length);
setWide(wide);
}
}
class Circle implements Shape{
private double radius;
public void Area(){
System.out.println("圆的半径为:"+this.radius+"面积为:"+Math.PI*radius*radius);
}
public void Perimeter(){
System.out.println("圆的半径为:"+this.radius+"周长为:"+2*Math.PI*radius);
}
public double getRadius(){
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(double radius){
setRadius(radius);
}
}
public class Day06 {
public static void main(String[] args) {
Shape [] Shape=new Shape[2];
Rect a=new Rect(2,3);
Circle b=new Circle(3);
Shape[0]=a;
Shape[1]=b;
for(int i=0;i<2;i++)
{
Shape[i].Area();
Shape[i].Perimeter();
}

}
}

你可能感兴趣的:(Java接口)