日期:2014-05-20  浏览次数:20687 次

关于抽象类和接口的一小问题,在线等
有一抽像类A,
1 其里面的方法为可以为 公有 保护 私有 抽象吗
2 继承A的子类要继承A中所有的方法吗
有一接口B,
3 其里面的方法为可以为 公有 保护 私有 抽象吗
4 实现接口B的类中,要实现B中所有的方法吗

thanks

------解决方案--------------------
像类A,
1 其里面的方法为可以为 公有 保护 私有 抽象
2 继承A的子类要继承A中所有的方法
有一接口B,
3 其里面的方法为 公有
4 实现接口B的类中,要实现B中所有的方法
------解决方案--------------------
1.可以,可以,可以,可以。抽象类中的方法可以有实现,也可以木有实现。
2.子类继承父类的所有成员变量和方法,但私有成员(包括变量和方法)和构造函数不能被继承。

1.接口中的方法都没有实现,必须没有。可以为公共,受保护的,不能是私有的,私有的怎么实现?本来就是抽象的,没有实现嘛!
2.是的。必须的!
------解决方案--------------------
有一抽像类A,
1 其里面的方法为可以为 公有 保护 私有 抽象
2 继承A的子类要继承A中所有的 非私有方法,复写除外。
有一接口B,
3 其里面的方法都是公有,可以不写public,默认是public。
4 实现接口B的类中,要实现B中所有的方法。
外加:
接口可以继承接口,抽象类可以实现接口。抽象类可以继承抽象类。
------解决方案--------------------
更正一下三楼的:

有一抽像类A,
1 其里面的方法为可以为 公有 保护 私有 抽象
2 继承A的子类要继承A中所有的 非私有并且是抽象方法
有一接口B,
3 其里面的方法都是公有的抽象的,可以不写public,默认是public abstract[b][/b]。
4 实现接口B的类中,要实现B中所有的方法。

外加:
接口可以继承接口,抽象类可以实现接口。抽象类可以继承抽象类。
------解决方案--------------------
package com.jason.demo.abstractclasstest;

public abstract class A {
/**抽象类中的全局方法*/
public void AA() {
System.out.println("全局方法!");
}

/**抽象类中的保护方法*/
protected void BB() {
System.out.println("保护方法!");
}

/**抽象类中的私有方法*/
private void CC() {
System.out.println("私有方法!");
}

/**抽象类中的方法*/
abstract void AB();
}


package com.jason.demo.abstractclasstest;

public class SubA extends A {

@Override
void AB() {
System.out.println("抽象方法的实现!");
}

/**
* @param args
*/
public static void main(String[] args) {
SubA subA = new SubA();
subA.AA();

subA.BB();

//subA.CC(); 由于是私有方法,无法继承使用

subA.AB();
}

}

------解决方案--------------------
抽象类中是可以有 公有 保护 私有 抽象 方法的, 继承时不能继承它的私有方法;
接口中的方法可以是公有的,抽象的,不能是保护和私有的。 

package com.jason.demo.abstractclasstest;

public abstract class A {
/**抽象类中的全局方法*/
public void AA() {
System.out.println("全局方法!");
}

/**抽象类中的保护方法*/
protected void BB() {
System.out.println("保护方法!");
}

/**抽象类中的私有方法*/
private void CC() {
System.out.println("私有方法!");
}

/**抽象类中的方法*/
abstract void AB();
}

package com.jason.demo.abstractclasstest;

public class SubA extends A {

@Override
void AB() {
System.out.println("抽象方法的实现!");
}

/**
* @param args
*/
public static void main(String[] args) {
SubA subA = new SubA();
subA.AA();

subA.BB();

//subA.CC(); 由于是私有方法,无法继承使用

subA.AB();
}

}

package com.jason.demo.interfacetest;

public interface IB {
public void BA();

//protected void BB(); 无法定义成保护的

//private void BC(); 无法定义成私有的

abstract void BD();
}