哪位大神可不可以给我讲一下继承abstract怎么用的啊?

asww22 2013-01-09 10:01:59
有点看不懂 特来请教一下
...全文
470 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Candylibin 2013-01-13
  • 打赏
  • 举报
回复
供Lz参考: 抽象方法:必须在抽象类中,不具体的方法(看不懂的东西,不确定的),可修饰为抽象 不可以被实例化(也就是不能被new出来),创建他没意义,要被使用,必须由其子类复写所有方法,建立子类对象调用,如果子类只复写了部分抽象方法,那么该子类还是个抽象类 抽象类中可以不定义抽象方法,但是抽象方法一定要定义在抽象类中
sjlzcj 2013-01-13
  • 打赏
  • 举报
回复
有一种接口叫做回调接口,就可以借助抽象类实现

public interface I {
	public void doSomething();
}
public abstract class Ac implements I{
	@Override
	public void doSomething() {
		beforDoSomething();
		System.out.println("DoIt");
		afterDoSomething();
	}
	abstract void beforDoSomething();
	abstract void afterDoSomething();
}
public class Cc extends Ac {
	@Override
	void beforDoSomething() {
		System.out.println("befor");
	}
	@Override
	void afterDoSomething() {
		System.out.println("after");
	}
	public static void main(String[] args) {
		I i = new Cc();
		i.doSomething();
	}
}
hurts8816 2013-01-13
  • 打赏
  • 举报
回复
说个最简单最浅的区别你先理解着吧。 抽象类:抽象方法+(实体方法) 接口:全抽象方法(实现时必须把所有的抽像方法重写实现) 当抽象类里面只有抽象方法时,可以考虑转成接口,因为类是单继承,接口可以实现“近似”的多继承功能,现在用抽象类的少了,接口灵活性要好点
放开那个衰锅 2013-01-11
  • 打赏
  • 举报
回复
抽象类就是含有抽象方法的类 抽象类不能被实例化 一般抽象类都会有子类继承,子类重写父类的方法,把它覆盖
chengxu2011 2013-01-11
  • 打赏
  • 举报
回复
抽象类在设计模式中可以实现适配器模式和模版模式,接口的话比抽象类更灵活了。。。。
hurts8816 2013-01-11
  • 打赏
  • 举报
回复
抽象类的使用和概念应该不难理解吧。 多敲老师教的代码,自己慢慢体会一下就知道该怎么去设计和继承它了。
  • 打赏
  • 举报
回复
接口方法必须全实现,抽象更灵活让继承者实现一些或者必须使用一些
LCore 2013-01-10
  • 打赏
  • 举报
回复
写的多了遇到的多了 体会也就多了
rome_wu 2013-01-10
  • 打赏
  • 举报
回复
抽象类跟接口的用处差不多,各有好处,但是接口的实现类必须实现全部抽象方法,不包括父类的普通方法.抽象类可以实现接口.接口可以继承接口.2楼是一个经典的例子!!包含了抽象方法和普通方法
笑莫问 2013-01-10
  • 打赏
  • 举报
回复
过来补习下概念。
Jacky-止涯 2013-01-10
  • 打赏
  • 举报
回复
引用 1 楼 dcxy0 的回复:
楼上还没有加抽象方法!我来写一个简单的吧:

abstract class Job {
    public void show() {
        System.out.println(getName());
    }
    // 抽象方法,等待子类实现
    public abstract String getName();
}
class Teacher extends Job {
    public String getName() {
        return "man";
    }
}
Job只是一个抽象的概念,具体的职业才能实例化。 Job定义了不同职业的共性的东西,像show,而不同的具体的职业的名字都不同,所以把show()作为抽象方法,等待具体的子类来实现。 Job只是定义好一个模板,show可以print职业名,即使不知道具体的职业。而当具体的职业类Teacher继承了Job以后,就必须实现Job遗留下来的getName方法,这时候show就能正常执行了。 楼主可以看看【模板模式】这个里面有详细的介绍!java的abstract其实就是模板模式的一个很好的实现。
student-ai 2013-01-10
  • 打赏
  • 举报
回复
按照我自己的思路来了: 1.抽象类不可以创建实例; 2.在子类里面如果没有覆盖父类的方法,则子类也将成为抽象类. 写的不好。。。凑合看下吧...


/** 测试abstract使用.
 * 
 * @author Ruidong_pu
 * @version 1.1 2013.1.10
 */

abstract class Tests {
	
	private String name;//定义姓名
	private String pwd;//定义密码
	
	public Tests(){
		
	}
	
	/** 用户名.
	 * set/get
	 * @param name
	 */
	public void setName(String name){
		this.name=name;
	}
	
	public String getName(){
		return name;
	}
	
	/** 密码
	 * set/get
	 * @param pwd
	 */
	
	public void setPwd(String pwd){
		this.pwd=pwd;
	}
	
	public String getPwd(){
		return pwd;
	}
	
	/**
	 * 重写需要注意:
	 * 1.名称
	 * 2.参数
	 * 3.返回类型这些需要一致.
	 * @return 父类名称.
	 */
	public String Show(){
		//System.out.println("Tests");
		return "Tests";
	}
}


public class TestTop extends Tests {
	
	public TestTop(){
		super();
	}
	
	
	/**
	 * 输出,覆盖父类的同名方法.
	 * @return TestTop类的测试字符串
	 */
	public String Show(){
		setName("x");
		setPwd("123");
		//System.out.println("TestsTop");
		return "TestTop:这个用户名是:"+getName()+"\t\t密码是:"+getPwd() ;
	}	

	
	public static void main(String args[]) {
		// TODO Auto-generated method stu
		Tests t =new TestTop();
		System.out.println(t.Show());
		System.out.println(t);
	}
}























62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧