18.抽象类与抽象方法的使用

public abstract class Base {
    //抽象类中可以没有抽象方法,但包含了抽象方法的类就必须被定义为抽象类
    public abstract void method1();
    public abstract void method2();
    public void method3(){}
    //没有抽象的构造方法
    //public abstract Base(){}
    //没有抽象的静态方法
    //static abstract void method4();

    public Base(){
        System.out.println("父类的无参构造方法");
    }

    static void method4(){
        System.out.print("静态方法表示类所特有的功能,这种功能的实现不依赖于类的具体实例,也不依赖于它的子类。因此,当前类必须为静态方法提供实现");
    }

}
//如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类

public abstract class Sub1 extends Base {

    public void method1() {
        System.out.println("重写父类的method1");
    }

}
//否则就必须实现父类的所有抽象方法
public class Sub2 extends Base {
    public Sub2(){
        System.out.println("子类的无参构造方法");
    }

    @Override
    public void method1() {
        System.out.println("重写父类的抽象方法method1");
    }

    @Override
    public void method2() {
        System.out.println("重写父类的抽象方法method2");
    }

}
public class Test {
    public static void main(String[] args) {
        //抽象类不允许实例化
        //Base base=new Base();
        //抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
        //抽象类不能被实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
        Base sub=new Sub2();
        sub.method1();
        sub.method4();
    }
}
时间: 2024-10-18 00:54:23

18.抽象类与抽象方法的使用的相关文章

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

java抽象类和抽象方法之间的关系

抽象类和抽象方法之间的关系有抽象方法的类,一定是抽象类:抽象类不一定有抽象方法当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类因为子类是继承父类全部内容,所以也就相当于子类中也有了抽象方法,通过重写,可以将抽象方法覆盖. 抽象类的特点:必须有abstract关键字修饰,不可以通过new来创建对象,抽象方法不可以写函数体(非抽象方法必须写函数体) 关键字小总结:不想让别的类重写的方法,用final:内容不确定的方法,用abstract(子类中用法不一样)

用基类接品,泛型抽象类,抽象方法实现代码复用

1.定义一个基类接口 ? 1 2 3 4 5 6 7 8 9 10 public interface IBaseEntity { /// <summary> 最后操作人编码 </summary> string LastOperatorCode { get; set; } /// <summary> 最后操作人 </summary> string LastOperator { get; set; } /// <summary> 最后操作时间 <

抽象类、抽象方法总结

首先区别抽象方法与虚方法:①从方法的声明来看:抽象方法只是方法的声明,没有方法体,关键字为abstract:虚方法则是有方法体的,关键子为virtual②从方法的声明位置来看:抽象方法只能声明在抽象类中:而虚方法则没有什么限制③从方法的使用来看:抽象方法必须在派生类中进行override,否则包含抽象方法的抽象类不能被实例化:而虚方法在派生类中则可以选择被重写,也可以选择不进行重写 抽象方法和虚方法的共同点:在使用的时候都是使用override关键字进行覆盖 抽象类普通类的区别与联系:①抽象类不

走近抽象类与抽象方法

一.定义 MSDN:抽象类是一些留有部分或全部成员未实现的类,以便可以由派生类来提供实现.在C#中,当一个类被abstract关键字修饰,我们就称之为抽象类. 二.抽象类的特点 1.抽象类不能被实例化. 1-1 ? 1 2 3 4 public abstract class People {       protected abstract void Speak(string s); } 1-2 ? 1 People p = new People(); 当我们试图执行1-2的代码时,编译器提示如

关于Java 实现抽象类的抽象方法的特性的利用---面向切面

今天看工作看代码突然有了以下设想: /** * Created by zq on 2017/5/25. * 抽象类 */ public abstract class AbstractC { public void C(){ D(); System.out.println("C_1"); E(); } public abstract void D(); // { // System.out.println("C_1"); // } public abstract vo

C#中的抽象类和抽象方法

一.抽象类和抽象方法的概念 在基类中的虚方法有时候不可能被调用到,而只是表达一种抽象的概念,用以为它的派生类提供一个公共的界面. C#中引入了抽象类(abstract class)的概念,可以将它定义成抽象方法.将该方法所在的类定义成抽象类. 抽象方法:只包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现. 抽象类:抽象类是能够包含抽象成员的类.抽象类只能作为基类使用,不能被实例化. 二.抽象类和抽象方法的使用原则 1  抽象类中可以存在非抽象方法,抽象方法必须包含在抽象类中

C#抽象类和抽象方法

如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract时就是抽象方法 抽象类概述及声明 抽象类与非抽象类的主要区别: ①.抽象类不能直接被实例化 ②.抽象类中可以只有抽象方法,也可以只有非抽象方法,也可以抽象方法.非抽象方法都有.(非抽象     类中不能有抽象方法). ③.抽象类不能被密封 以上会在下面例子中一一验证: class Program { static void Main(strin

第二章 C#继承&amp;继承类型&amp;虚函数&amp;抽象类&amp;抽象函数&amp;抽象方法&amp;隐藏方法

继承:实现继承,接口继承. C#不支持多实现继承,支持多接口继承 public class Class4:Class3,IInterface1,IInterface2 { } 虚方法:virtual 基类中声明virtual方法,在派生类中可以重写,并且调用的时候总是调用重写的方法. public class Class1 { public virtual void A() { Console.WriteLine("Class1.A"); } public void B() { Con