java之动态绑定(多态)、抽象类、接口【6】
2016-08-12 00:00
316 查看
摘要: 动态绑定 抽象类 接口
其存在的必要条件
要有继承
要有重写
父类引用指向子类对象
共有三个enjoy()函数,所以myPetEnjoy()函数中具体调用哪一个enjoy()函数由new的对象来决定
含有抽象方法的类必须声明为抽象类
抽象类不能被实例化,也可以理解为没有构造函数,抽象方法必须被重写
一种特殊的抽象类
只包含public static final常量和抽象方法,但是abstract可以省略
接口特性:
多重实现(一个类可以实现多继承)
接口中只能定义抽象方法,而且这些方法只能默认为public
接口可以继承其他接口
一、动态绑定
指在执行期间(run,分配内存)而非编译期间判断所引用对象的实际类型,根据实际类型调用相关方法。其存在的必要条件
要有继承
要有重写
父类引用指向子类对象
package practice; class Animal{ private String name; Animal(String name){ this.name=name; } public void enjoy(){ System.out.println("叫声........"); } } class Cat extends Animal{ private String eyescolor; Cat(String name,String color){ super(name); this.eyescolor=color; } public void enjoy(){ System.out.println("猫叫........."); } } class Dog extends Animal{ private String furcolor; Dog(String name,String color){ super(name); this.furcolor=color; } public void enjoy(){ System.out.println("狗叫。。。。。。"); } } class Lady{ private String name; Animal pet; Lady(String name,Animal animal){ this.name=name; this.pet=animal; } public void myPetEnjoy(){ pet.enjoy();//根据new的对象来决定调用哪一个方法 } } public class TestLady { public static void main(String args[]){ Cat cat=new Cat("mimi","black"); Dog dog=new Dog("wangwang","white"); Lady l1=new Lady("lili",cat); Lady l2=new Lady("wenwne",dog); l1.myPetEnjoy(); l2.myPetEnjoy(); } } 结果:猫叫......... 狗叫。。。。。。
共有三个enjoy()函数,所以myPetEnjoy()函数中具体调用哪一个enjoy()函数由new的对象来决定
二、抽象类及抽象方法
抽象方法类似c++中的纯虚函数含有抽象方法的类必须声明为抽象类
抽象类不能被实例化,也可以理解为没有构造函数,抽象方法必须被重写
package practice; abstract class Animal{ abstract void getinfo(); } class Pig extends Animal{ private String name; private int height; private int weight; Pig(String name, int height, int weight) { this.name=name; this.height=height; this.weight=weight; } void getinfo(){ System.out.println("name:"+name+" "+"height:"+height+" "+"weight:"+weight); } } public class _abstract { public static void main(String args[]){ Pig pig=new Pig("lulu",20,30); pig.getinfo(); } } 结果:name:lulu height:20 weight:30
三、接口
class<name>extends<superclass>implements<interfacename>一种特殊的抽象类
只包含public static final常量和抽象方法,但是abstract可以省略
接口特性:
多重实现(一个类可以实现多继承)
接口中只能定义抽象方法,而且这些方法只能默认为public
接口可以继承其他接口
package practice; interface Singer{ public int age=20; public void sing(); public void sleep(); } interface Painter{ public int age=30; public void paint(); public void sleep1(); } class People implements Singer,Painter{ @Override public void sing() { // TODO Auto-generated method stub System.out.println("I'm singing......"); } @Override public void sleep() { // TODO Auto-generated method stub System.out.println("I'm sleep......"); } @Override public void paint() { // TODO Auto-generated method stub System.out.println("I'm sleeping...."); } @Override public void sleep1() { // TODO Auto-generated method stub System.out.println("You are sleeping..."); } } public class TestInterface { public static void main(String args[]){ People people=new People(); people.sing(); people.sleep(); people.paint(); people.sleep1(); } 结果:I'm singing...... I'm sleep...... I'm sleeping.... You are sleeping...
相关文章推荐
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- Java基础-构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用
- Java面向对象8——对象转型,动态绑定,抽象类,final关键字及接口
- Java学习之面向对象(1.Object类,(1)toString方法,(2)equals方法,2.对象转型(casting),3.动态绑定与多态,4.抽象类(abstract),5.Final关键字)
- Java笔记(八) 多态、抽象类、final关键字和接口
- NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】
- 黑马程序员_Java基础_抽象类,模板设计模式,接口,内部类,多态
- 黑马程序员—Java面向对象(抽象类、模板方法设计模式、接口、多态、内部类)
- 黑马程序员--JAVA<面向对象>--构造函数、抽象类、接口、多态
- 黑马程序员_java的继承性- 继承-final关键字-抽象类-接口-多态-异常-包-多线程-
- Java多态与动态绑定
- Java学习-多态学习续 抽象类和接口
- All About JAVA 继承、多态、抽象类、接口、面向接口编程
- java 继承 方法重写 自动转型 多态 接口 抽象类
- JAVA笔记9-多态(动态绑定、池绑定)
- java [继承]-[接口]-[抽象类]-[多态]-[Object]
- java 中关于抽象类和接口的范例,通过多态中的向上转移实现
- 黑马程序员 Java面向对象(继承,抽象类,接口,多态,内部类)
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类