- 1.抽象类---abstract
当父类的方法不确定时候,可以abstract关键修饰这种方法,可以修饰这种方法,同样修饰这样类:
1)当一个类继承父类是抽象类,子类必须实现父类其中所有的抽象方法
2) 抽象方法必须在抽象类,抽象方法在父类不能实现 只能是这样 abstract public void cry();没有主体
3) 抽象类 不能实例化; anmial an=new anmial() 出现问题
4) 抽象类没有abstract方法,不能有主体
主体: abstract void cry(){ }
public class demo_2 {
anmial an =new anmial();//会报错 抽象方法不能实例会
Cat cat=new Cat();
}
abstract class anmial{
String name;
int age;
//动物会叫,不知道会怎样去叫 ---必须要抽象
//抽象方法在抽象类中 抽象类同样继承
abstract public void cry();
}
//当一个类继承父类是抽象类,子类必须实现其中所有的抽象方法
class Cat extends anmial{
public void cry()
{
//实现;不会报错
}
}
- 2. 接口----实现多继承和多态
class 类名 implement interface
{
}
1). 实现接口的话,必须实现接口中所有的方法
2). 接口不能实例化,接口中所有方法不能用主体
3).调用接口 接口过程有变量{但是变量不能用private 和 protected 修饰,变量要初始化}---接口中变量都是static类型,并且接口中变量常变量必须要初始化---接口中变量本质上静态的且final类型。
4).一个接口不能继承其他类 可以继承其他接口;但是实现接口时候除了实现本接口中方法,还要实现继承的接口中方法
/**
*
*/
package ExtendsDemo;
/**
* @author
*
*/
public interface USB extends kkk {
int a=0;//static 类型且 final
public void start();
public void stop();
}
interface kkk{
public void fry();
}
//一个类实现多个接口
class Camera implements USB,kkk
{
//当一个类实现某个接口,必须该类实现接口所有方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("我是相机 开始工作");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("我是相机 停止工作");
}
@Override
public void fry() {
// TODO Auto-generated method stub
}
}
class Phone implements USB
{
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("我是phone 开始工作");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("我是phone 停止工作");
}
@Override
public void fry() {
// TODO Auto-generated method stub
}
}
class Computer{
public void USeUsb( USB usb)
{//多态,电脑自己识别调用不同实例
usb.start();
usb.stop();
}
}
两者区别:
1. 抽象类可以为成员方法提供实现的细节,但是接口 只能有public abstract方法 不能有private或者protected修饰成员方法
接口方法都是public。
2.抽象类成员变量各种类型,但是接口中变量只能是public static静态变量
3.接口中不能用静态代码块或者静态的方法
4.
接口不能继承其他类,继承其他的接口,一个类只能继承一个抽象类但是实现多个接口(接口只能继承接口,类只能继承一个抽象类)
public class demo_2 {
anmial an =new anmial();//会报错 抽象方法不能实例会
Cat cat=new Cat();
}
abstract class anmial{
String name;
int age;
//动物会叫,不知道会怎样去叫 ---必须要抽象
//抽象方法在抽象类中 抽象类同样继承
abstract public void cry();
}
//当一个类继承父类是抽象类,子类必须实现其中所有的抽象方法
class Cat extends anmial{
public void cry()
{
//实现;不会报错
}
}
- 2. 接口----实现多继承和多态
class 类名 implement interface
{
}
1). 实现接口的话,必须实现接口中所有的方法
4).一个接口不能继承其他类 可以继承其他接口;但是实现接口时候除了实现本接口中方法,还要实现继承的接口中方法
/**
*
*/
package ExtendsDemo;
/**
* @author
*
*/
public interface USB extends kkk {
int a=0;//static 类型且 final
public void start();
public void stop();
}
interface kkk{
public void fry();
}
//一个类实现多个接口
class Camera implements USB,kkk
{
//当一个类实现某个接口,必须该类实现接口所有方法
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("我是相机 开始工作");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("我是相机 停止工作");
}
@Override
public void fry() {
// TODO Auto-generated method stub
}
}
class Phone implements USB
{
@Override
public void start() {
// TODO Auto-generated method stub
System.out.println("我是phone 开始工作");
}
@Override
public void stop() {
// TODO Auto-generated method stub
System.out.println("我是phone 停止工作");
}
@Override
public void fry() {
// TODO Auto-generated method stub
}
}
class Computer{
public void USeUsb( USB usb)
{//多态,电脑自己识别调用不同实例
usb.start();
usb.stop();
}
}
两者区别: