1.抽象类
1.1抽象类可以有构造方法
public abstract class ChinaDog {
//可以有构造方法
ChinaDog() {
System.out.println("ChinaDog");
}
//唱歌
public abstract void sing();
//吃饭
public void eat() {
System.out.println("ChinaDog吃饭!");
}
}
1.2有抽象方法一定要是抽象类,抽象类里面可以没有抽象方法;
1.3抽象类不可以实例化
ChinaDog g = new ChinaDog();//这样是不可以的
1.4抽象方法一定要重写
2.接口
2.1接口没有构造方法//废话。。
2.2接口类里的方法默认是抽象方法;
2.3接口不可以实例化
public interface Pet {
//唱歌
public void sing();
//画图
public void paint();
}
3.普通类
package cn.lumin.demo;
public class ChinaDog1 {
ChinaDog1() {
System.out.println(“ChinaDog1”);
}
public void eat() {
System.out.println("ChinaDog1吃饭");
}
}
4.测试类
package cn.lumin.demo;
public class Dog extends ChinaDog1 implements Pet {
/**
* @param args
*
*
*
*/
Dog() {
System.out.println(this.getClass());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Pet p = new Dog();
new Dog().sing();
Pet p = new Pet();
// p.paint();
// ChinaDog1 b = new Dog();
// b.eat();
// Dog d = new Dog();
// d.sing();
}
@Override
public void sing() {
// TODO Auto-generated method stub
System.out.println("Dog我不会唱歌");
}
public void eat() {
System.out.println("Dog吃饭");
}
@Override
public void paint() {
// TODO Auto-generated method stub
System.out.println("Dog我会画图");
}
}