4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
2017-04-26 21:52
831 查看
定义一个类时,常常需要定义一些方法描述类的行为特征,这些方法的实现方式是无法确定的。Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法用abstract修饰
格式:
包含方法体的类必须声明为抽象类,但抽象类可以不包含任何抽象方法
抽象类是不可以被实例化的,抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。
如何实现抽象类中的抽象方法
4.3.2接口
如果抽象类中所有方法都是抽象的,那么可以将这个类用另外另外一种方式来定义,接口
接口中定义的方法和变量都包含一些默认修饰符。接口中定义的方法默认使用public abstract来修饰,即抽象方法,接口中的变量用public static final修饰,这个值是不能改变的,是一个全局常量。
调用接口中的方法:
因为接口中的都是抽象方法,所以不能通过实例化对象直接调用接口中的方法,这时需要定义一个类,并使用implement实现接口中的抽象方法。
接口之间的继承关系
1、接口的方法都是抽象的,不能实例化对象
2、当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法就可以,否则,实现接口中的所有方法
这句具体我也不明白······
3、一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口要用,隔开
格式如下:
4、一个接口可以通过extends关键字继承多个接口,接口之间用,隔开。
5、一个类在继承另一个类的时候同时还可以实现接口,此时,extends关键字位于implements关键字之间
class Dog extends canidae implements animal//先继承,再实现
{
程序代码
}
格式:
abstract void shout( ); //定义抽象方法shout
//定义抽象类animal abstract class animal { //定义抽象方法shout() abstract int shout();//不包含方法体的抽象方法 }
包含方法体的类必须声明为抽象类,但抽象类可以不包含任何抽象方法
抽象类是不可以被实例化的,抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。
如何实现抽象类中的抽象方法
abstract class animal { //定义抽象方法shout abstract void shout(); } class Dog extends animal { //实现抽象方法 void shout() { System.out.println("旺旺~"); } } public class Example10 { public static void main(String []args) { Dog p = new Dog(); p.shout(); } }
4.3.2接口
如果抽象类中所有方法都是抽象的,那么可以将这个类用另外另外一种方式来定义,接口
interface animal { int ID = 1;//定义全局常量 void breathe();//定义抽象方法 void run(); }
接口中定义的方法和变量都包含一些默认修饰符。接口中定义的方法默认使用public abstract来修饰,即抽象方法,接口中的变量用public static final修饰,这个值是不能改变的,是一个全局常量。
调用接口中的方法:
因为接口中的都是抽象方法,所以不能通过实例化对象直接调用接口中的方法,这时需要定义一个类,并使用implement实现接口中的抽象方法。
//定义animal接口 interface animal { int ID = 1 ; void breathe(); void run(); } //dog类实现animal接口, class Dog implements animal { //实现breathe的方法 public void breathe() { System.out.println("狗在呼吸"); } //实现run方法 public void run() { System.out.println("狗在跑"); } } public class Example11 { public static void main(String []args) { Dog dog = new Dog();//创建一个dog实例化对象 dog.breathe();//调用dog类中的breathe方法 dog.run(); } }
接口之间的继承关系
//定义animal接口 interface animal { int ID = 1 ; void breathe(); void run(); } //定义LanfdAnimal接口并继承animal接口 interface LandAnimal extends animal { void lijia();//定义抽象方法 } //定义dog实现LandAnimal接口,使用implements实现接口 class Dog implements LandAnimal { public void breathe() { System.out.println("狗在呼吸"); }//实现breathe的方法 public void run() { System.out.println("狗在跑"); }//实现run方法 public void lijia() { System.out.println("狗生活在陆地上"); }//实现lijia方法 } public class Example11 { public static void main(String []args) { Dog dog = new Dog();//创建一个实例对象 dog.breathe();//调用breathe方法 dog.run();//调用run方法 dog.lijia();//调用lijia方法 } }
1、接口的方法都是抽象的,不能实例化对象
2、当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法就可以,否则,实现接口中的所有方法
这句具体我也不明白······
3、一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口要用,隔开
格式如下:
interface Run { //程序代码 } interface Fly { //程序代码 } class Bird implements Run,Fly { // 程序代码 }
4、一个接口可以通过extends关键字继承多个接口,接口之间用,隔开。
interface Running { //程序代码 } interface Flying { //程序代码 } interface Eating extends Running,Flying { //程序代码 }
5、一个类在继承另一个类的时候同时还可以实现接口,此时,extends关键字位于implements关键字之间
class Dog extends canidae implements animal//先继承,再实现
{
程序代码
}
相关文章推荐
- 抽象类、抽象方法、接口的区别及实现
- 抽象类继承抽象类可以不重写父类的抽象方法,普通类继承抽象类必须重写父类中的抽象方法,实现接口也是同样的道理
- java中抽象类、抽象方法、接口与实现接口实例详解
- JavaSE8基础 抽象类实现只包含抽象方法的接口
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- C#中的虚方法、抽象方法、抽象类以及接口
- C#中的虚方法、抽象方法、抽象类、接口的联系与区别
- interface,abstract class,abstract interface Java中的接口,抽象类和抽象接口的异同
- C#类、接口、虚方法和抽象方法-非抽象类与接口的差别
- Java关键字static,abstract,instanceof使用(静态属性,静态方法,抽象类抽象方法的学习)
- 学习抽象类和接 4000 口的实现,抽象方法的创建和实现
- Java中接口定义及实现接口的抽象方法
- 为什么抽象类实现接口的时候不需要重写接口里的方法?
- 接口、抽象类、抽象方法、虚方法 的区别
- C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别
- 浅谈C# 多态的魅力(虚方法,抽象,接口实现)(转)
- 请问Java中抽象类中的抽象方法是否一定要被继承类实现?
- 接口 抽象类 应用不同与区别,抽象方法 虚方法应用不同
- 抽象类(abstract),虚方法(virtual),接口(interface)对比分析(三)
- 浅谈C# 多态的魅力(虚方法,抽象,接口实现)