当前位置:编程学习 > JAVA >>

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

有点看不懂  特来请教一下 --------------------编程问答--------------------
按照我自己的思路来了:

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);
}
}























--------------------编程问答--------------------
引用 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其实就是模板模式的一个很好的实现。 --------------------编程问答-------------------- 过来补习下概念。 --------------------编程问答-------------------- 抽象类跟接口的用处差不多,各有好处,但是接口的实现类必须实现全部抽象方法,不包括父类的普通方法.抽象类可以实现接口.接口可以继承接口.2楼是一个经典的例子!!包含了抽象方法和普通方法 --------------------编程问答-------------------- 写的多了遇到的多了
体会也就多了 --------------------编程问答-------------------- 接口方法必须全实现,抽象更灵活让继承者实现一些或者必须使用一些 --------------------编程问答-------------------- 抽象类的使用和概念应该不难理解吧。
多敲老师教的代码,自己慢慢体会一下就知道该怎么去设计和继承它了。 --------------------编程问答-------------------- 抽象类在设计模式中可以实现适配器模式和模版模式,接口的话比抽象类更灵活了。。。。 --------------------编程问答-------------------- 抽象类就是含有抽象方法的类
抽象类不能被实例化
一般抽象类都会有子类继承,子类重写父类的方法,把它覆盖 --------------------编程问答-------------------- 说个最简单最浅的区别你先理解着吧。
抽象类:抽象方法+(实体方法)
接口:全抽象方法(实现时必须把所有的抽像方法重写实现)
当抽象类里面只有抽象方法时,可以考虑转成接口,因为类是单继承,接口可以实现“近似”的多继承功能,现在用抽象类的少了,接口灵活性要好点 --------------------编程问答-------------------- 有一种接口叫做回调接口,就可以借助抽象类实现

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();
}
}
--------------------编程问答-------------------- 供Lz参考:

抽象方法:必须在抽象类中,不具体的方法(看不懂的东西,不确定的),可修饰为抽象

不可以被实例化(也就是不能被new出来),创建他没意义,要被使用,必须由其子类复写所有方法,建立子类对象调用,如果子类只复写了部分抽象方法,那么该子类还是个抽象类

抽象类中可以不定义抽象方法,但是抽象方法一定要定义在抽象类中
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,