1.Java支持的数据类型有哪些?什么是自动拆装箱?
Java语言支持的8中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。
2.接口和抽象类的区别是什么?
Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
3.接口是否可继承接口?接口类是否实现接口?接口类是否可继承实体类?
接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但前提是实体类必须要有明确的构造函数
1.Java抽象类可以有构造函数吗?
抽象类虽然自身不可以实例化,但是其子类覆盖了所有的抽象方法后,是可以实例化的,所以抽象类的构造函数,适用于给其子类对象进行初始化的
2.Java抽象类可以实现接口吗?它们需要实现所有的方法吗?
可以,抽象类可以通过使用关键字implements来实现接口。因为它们是抽象的,所以它们不需要实现所有的方法,抽象类可以不实现接口的方法,由抽象类的子类实现
3.Java抽象类可以是final的吗?
不可以,Java抽象类不能是final的。final的不能被继承。
4.Java抽象类可以有static方法吗?
可以,抽象类可以声明并定义static方法。
5.可以创建抽象类的实例吗?
不可以,你不能创建Java抽象类的实例,它们是不完全的。即使你的抽象类不包含任何抽象方法,你也不能对它实例化。将类声明为abstract的,就等你你告诉编译器,它是不完全的不应该被实例化。当一段代码尝试实例化一个抽象类时Java编译器会抛错误。
6.抽象类必须有抽象方法吗?
抽象类可以没有抽象方法,但有抽象方法的必须是抽象类。
7.Java抽象类和接口有何不同?
Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
1.写一个形状接口Shape 有两个方法一个求周长,一个求面积 2. 写一个长方形类Rect继承于形状类 增加属性长和宽 分别去覆盖求周长和求面积的方法 3.写一个圆形类Circle 增加属性半径 分别去覆盖求周长和求面积的方法 写一个测试类,在测试类中分别创建不同的对象放入进一个Shape 数组中进行,循环数组中的元素求周长和面积
<span style="font-family:SimSun;">package method;
interface Shape{
public abstract void Per();
public abstract void Area();
}
class Rect implements Shape{
private double length;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWide() {
return wide;
}
public void setWide(double wide) {
this.wide = wide;
}
private double wide;
public void Per(){
System.out.println("长方形长:"+this.length+"长方形宽:"+this.wide+"周长:"+(2*(this.length+this.wide)) );
}
public void Area() {
System.out.println("长方形长:"+this.length+"长方形宽:"+this.wide+"面积:"+(this.length*this.wide) );
}
public Rect(double length, double wide) {
setLength(length);
setWide(wide);
}
}
class Circle implements Shape{
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public void Per() {
System.out.println("圆半径:"+this.radius+"圆面积:"+(Math.PI*this.radius*this.radius) );
}
public void Area() {
System.out.println("圆半径:"+this.radius+"圆周长:"+(Math.PI*this.radius*2) );
}
public Circle(double radius){
setRadius(radius);
}
}
public class demo6 {
public static void main(String[] args) {
Shape[] Shape=new Shape[2];
Rect a=new Rect(5,10);
Circle b=new Circle(5);
Shape[0]=a;
Shape[1]=b;
for(int i=0;i<2;i++){
Shape[i].Per(); Shape[i].Area();
}
}
}
</span>