interface A{} interface B{} interface C extends A,B{}你这个C接口不就是同时继承了接口A和接口B吗 这就是多继承阿
不好意思 你那个网址的东东太长了,呵呵简单的说吧 只有接口可以多继承 比如 interface C extends A,B{} 类只能单继承 (排除其他变相的多继承) class c extends A{}但是类可以实现多个接口 比如 class C1 implements A1,B1{}
JAVA中没有多继承,而用接口“实现了多继承”!一个类或是可以同时实现多个接口!(就相当于C++里一个类同时继承了多个类!) 指的是这个(伪代码): public class 你 implements 妈妈的好儿子,单位的好同事,党的好儿女 {}反过来一个接口可以有多个实现(伪代码): public class 你 implements 人 {} public class 我 implements 人 {} public class 他 implements 人 {}
public class MyDaoImpl extends BaseDao implements IMyBiz,IMyBaseDao(){}
用策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式的好处在于你可以动态的改变对象的行为。 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。下面是一个例子。 /* 这是一个表现僧人和道士的程序,僧人光头,使用棍子做武器,道士长小胡子,使用拂尘作武器 */ package strategy; //处理长相接口 interface LooksBehavier { public void display(); } //处理所使用的武器接口 interface WeaponBehavier { public void useWeapon(); } //角色基类 class Role { public int heght; //身高 public int sex; //性别 public WeaponBehavier weapon; //处理武器接口的实例 public LooksBehavier looks; //处理长相的接口的实例 public void display() //显示长相 { looks.display(); } public void weapon() //设置所使用的武器 { weapon.useWeapon(); } } //道士长相类,实现了长相接口 class TaoistBehavier implements LooksBehavier { public void display() //实现接口函数 { System.out.println("I''m a taolist with long white goatee"); } } //和尚长相类,实现了长相接口 class BonzeBehavier implements LooksBehavier { public void display() //实现接口函数 { System.out.println("I''m a Bonze with no hair"); } } //道士武器类,实现了处理武器接口 class TaoistWeapon implements WeaponBehavier { public void useWeapon() //实现了处理武器接口函数 { System.out.println("My weapon is horsetail whisk");; } } //和尚武器类,实现了处理武器接口 class BonzeWeapon implements WeaponBehavier { public void useWeapon() //实现了处理武器接口函数 { System.out.println("My weapon is truncheon");; } } //道士 class Taoist extends Role { public Taoist() { looks = new TaoistBehavier(); weapon = new TaoistWeapon(); } } //和尚 class Bonze extends Role { public Bonze() { looks = new BonzeBehavier(); weapon = new BonzeWeapon(); } public void changeWeapon() { weapon = new TaoistWeapon(); System.out.println("change weapon"); } } public class RoleBase{ public static void main(String [] arg) { Taoist taoistObj = new Taoist(); Bonze bonzeObj = new Bonze(); taoistObj.display(); taoistObj.weapon(); bonzeObj.display(); bonzeObj.weapon(); bonzeObj.changeWeapon(); //改变和尚使用的武器 bonzeObj.weapon(); } } 成功执行后的输出为: I''m a taolist with long white goatee My weapon is horsetail whisk I''m a Bonze with no hair My weapon is truncheon change weapon My weapon is horsetail whisk 文章出处:http://www.diybl.com/course/3_program/java/javajs/200838/103114.html
class Test implements A,B,C 就是多继承的表现
楼主没有真正理解 java 多继承意义java 通过接口达到多继承,是为了让一个类同时具有多种类型,从而达到多态的效果;而不是让类继承其父类已经实现的方法。 interface A{} interface B{} interface C extends A,B{} class A1 implements A{} class B1 implements B{} class C1 implements C{} 如果创建一个 C1 类型的对象: C1 obj = new C1();则 obj 同时也是C类型,而接口C继承了接口A、B,因此它又是A和B接口的一个对象,可以这样写: C1 obj = new C1(); C c = obj; A a = obj; B b = obj再次强调一下,多继承的根本目的不是为了可以调用父类已经实现的方法而少写几行代码,而是为了多态而增强系统的灵活性
使用A1对象的地方,也就可以使用C1的对象吗? 错
interface A1 extends A{}
interface B1 extends B{}
class C1 implements A1,B1{}
我在这看的 没看懂,
他说的是不是能够通过接口能实现C1类 同时继承 没有关系的 A1和B1两个类,实现使用父类A1或B1对象的地方 也可以使用子类C1的对象
楼主去看看java基础吧,只有有了一定的基础,再来问自己不明白的东西,这样才能更快的学习,提高自己。
没看懂,
interface A1 extends A{}
interface B1 extends B{}
class C1 implements A1,B1{}
这样写 在使用A1对象的方法中不允许使用C1的对象啊!!
理论上可以
能给个例子吗?
interface B{}
interface C extends A,B{}你这个C接口不就是同时继承了接口A和接口B吗
这就是多继承阿
你那个网址的东东太长了,呵呵简单的说吧
只有接口可以多继承
比如
interface C extends A,B{} 类只能单继承
(排除其他变相的多继承)
class c extends A{}但是类可以实现多个接口
比如
class C1 implements A1,B1{}
指的是这个(伪代码):
public class 你 implements 妈妈的好儿子,单位的好同事,党的好儿女
{}反过来一个接口可以有多个实现(伪代码):
public class 你 implements 人
{}
public class 我 implements 人
{}
public class 他 implements 人
{}
设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。下面是一个例子。
/*
这是一个表现僧人和道士的程序,僧人光头,使用棍子做武器,道士长小胡子,使用拂尘作武器
*/
package strategy;
//处理长相接口
interface LooksBehavier
{
public void display();
} //处理所使用的武器接口
interface WeaponBehavier
{
public void useWeapon();
}
//角色基类
class Role {
public int heght; //身高
public int sex; //性别
public WeaponBehavier weapon; //处理武器接口的实例
public LooksBehavier looks; //处理长相的接口的实例
public void display() //显示长相
{
looks.display();
}
public void weapon() //设置所使用的武器
{
weapon.useWeapon();
}
} //道士长相类,实现了长相接口
class TaoistBehavier implements LooksBehavier
{
public void display() //实现接口函数
{
System.out.println("I''m a taolist with long white goatee");
} } //和尚长相类,实现了长相接口
class BonzeBehavier implements LooksBehavier
{
public void display() //实现接口函数
{
System.out.println("I''m a Bonze with no hair");
} } //道士武器类,实现了处理武器接口
class TaoistWeapon implements WeaponBehavier
{
public void useWeapon() //实现了处理武器接口函数
{
System.out.println("My weapon is horsetail whisk");;
}
} //和尚武器类,实现了处理武器接口
class BonzeWeapon implements WeaponBehavier
{
public void useWeapon() //实现了处理武器接口函数
{
System.out.println("My weapon is truncheon");;
}
} //道士
class Taoist extends Role
{
public Taoist()
{
looks = new TaoistBehavier();
weapon = new TaoistWeapon();
}
} //和尚
class Bonze extends Role
{
public Bonze()
{
looks = new BonzeBehavier();
weapon = new BonzeWeapon();
}
public void changeWeapon()
{
weapon = new TaoistWeapon();
System.out.println("change weapon");
}
}
public class RoleBase{
public static void main(String [] arg)
{
Taoist taoistObj = new Taoist();
Bonze bonzeObj = new Bonze();
taoistObj.display();
taoistObj.weapon();
bonzeObj.display();
bonzeObj.weapon();
bonzeObj.changeWeapon(); //改变和尚使用的武器
bonzeObj.weapon();
}
} 成功执行后的输出为:
I''m a taolist with long white goatee
My weapon is horsetail whisk
I''m a Bonze with no hair
My weapon is truncheon
change weapon
My weapon is horsetail whisk
文章出处:http://www.diybl.com/course/3_program/java/javajs/200838/103114.html
interface A{}
interface B{}
interface C extends A,B{}
class A1 implements A{}
class B1 implements B{}
class C1 implements C{} 如果创建一个 C1 类型的对象:
C1 obj = new C1();则 obj 同时也是C类型,而接口C继承了接口A、B,因此它又是A和B接口的一个对象,可以这样写:
C1 obj = new C1();
C c = obj;
A a = obj;
B b = obj再次强调一下,多继承的根本目的不是为了可以调用父类已经实现的方法而少写几行代码,而是为了多态而增强系统的灵活性