问题一:说明一下Java抽象类和接口的区别?
1.抽象类是用abstact修饰的类,抽象类中的方法不必全是抽象方法,而接口中必须全是抽象方法。此外,接口是一种编码规范。
2.方法:抽象类默认为public修饰方法,可以包含静态方法,接口默认为public abstract 修饰方法,不包含静态方法。
3.成员变量:抽象类中有普通成员变量,接口中只能用public final static修饰变量。
4.构造方法:抽象类有,接口没有。
5.一个类可以实现多个接口,但只能继承一个抽象类。
抽象类的实现代码:
package firstday;
public class forthday {
public static void main(String[] args) {
ben b = new ben();
b.total();
b.print();
}
}
abstract class Car{
public Car() {
super();
// TODO Auto-generated constructor stub
}
public void total() {
System.out.println("我是车");
}
abstract void print();
}
class ben extends Car{
public ben() {
super();
// TODO Auto-generated constructor stub
}
public void print() {
System.out.println("我是奔驰车");
}
}
接口的实现代码:
package firstday;
public class onetest {
public static void main(String[] args) {
inter i = new Demo();
i.print();
System.out.println(i.num);
}
}
interface inter{
public abstract void print();
int num = 10;
}
class Demo implements inter{
public void print() {
System.out.println("print");
}
}
问题二:介绍一下java中的多态?
定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
简单而言:通过基类引用指向子类对象
简单的代码实现:
package new_month2;
import java.util.Scanner;
//经典的猫狗案例
public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal an = new Cat();
an.setName("猫");
an.setAge(2);
System.out.println("我是"+an.getName()+"~~~~~~~~"+"我今年"+an.getAge()+"两岁了");
an.cry();
an.eat();
}
}
class Animal{
String name;
int age;
public Animal() {
super();
// TODO Auto-generated constructor stub
}
public Animal(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void cry() {
System.out.println("不知道叫什么");
}
public void eat() {
System.out.println("不知道吃什么");
}
}
class Cat extends Animal{
public Cat() {
super();
// TODO Auto-generated constructor stub
}
public Cat(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void cry() {
System.out.println("喵喵");
}
public void eat() {
System.out.println("我吃鱼");
}
}
class Dog extends Animal{
public Dog() {
super();
// TODO Auto-generated constructor stub
}
public Dog(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public void cry() {
System.out.println("旺旺");
}
public void eat() {
System.out.println("我吃骨头");
}
}