抽象类接口的理解
鲁迅的一句话:总之岁月漫长,然而值得等待。
/*
抽象类中的面试题:
1.一个抽象类中可不可以没有抽象方法:可以,这样做的目的只有一个,就是不让其他类创建本类对象交给子类完成。
2.abstract关键字不能和哪些关键字共存:
static final private
接口的概述与特点:
对外提供规则的都是接口,Java中interface为定义接口的关键字。
类实现接口用implements关键字。
接口不能实例化,用多态的方式来实例化。
接口的子类要重写接口中的所有抽象方法。
接口中的成员特点:
1.成员变量只能是常量,并且是静态的公共的,public static final。
2.构造方法:接口没有。
3.成员方法:只有抽象方法,public abstract。
类、接口之间的联系:
1.类与类:继承关系,只能单继承,可以多层继承。
2.类与接口:实现关系,能多实现,可以继承一个类的同时实现多个接口。
3.接口与接口:继承关系,可以单继承,也可以多继承。
抽象类和接口的理念:
1.抽象类被继承体现的是"is a"的关系,抽象类中定义的是该继承体系中的共性功能。
2.接口被实现体现的是"like a"的关系,接口中定义的是该实现体系中的扩展功能。
*/
/*
interface InterA{
abstract void printA();
}
interface InterB{
abstract void printB();
}
interface InterC extends InterA,InterB{
}*/
class day6{
public static void main(String[] args) {
new Dog(16,"老大").eat();
new Dog(18,"老二").sleep();
new Cat(13,"花花").eat();
new Cat(12,"草草").sleep();
new Cat(12,"草草").jump();
}
}
/*
class demo implements InterC{
public void printA(){
System.out.println("接口A");
}
public void printB(){
System.out.println("接口B");
}
}
*/
interface Jump{
public abstract void jump();
}
abstract class Animal{
private int age;
private String name;
public Animal(){
}
public Animal(int age,String name){
this.age=age;
this.name=name;
}
abstract void eat();
abstract void sleep();
void setAge(int age){
this.age=age;
}
void setName(String name){
this.name=name;
}
int getAge(){
return this.age;
}
String getName(){
return this.name;
}
}
class Dog extends Animal{
public Dog(int age,String name){
super(age,name);
}
void eat(){
System.out.println(this.getAge()+"的"+this.getName()+"成功吃饭");
}
void sleep(){
System.out.println(this.getAge()+"的"+this.getName()+"睡觉");
}
}
class Cat extends Animal implements Jump{
public Cat(int age,String name){
super(age,name);
}
void eat(){
System.out.println(this.getAge()+"的"+this.getName()+"成功吃饭");
}
void sleep(){
System.out.println(this.getAge()+"的"+this.getName()+"睡觉");
}
public void jump(){
System.out.println(this.getAge()+this.getName()+"学会了跳高");
}
}