抽象类相关知识
-
PHP 抽象类继承抽象类时的注意点PHP 抽象类继承抽象类时的注意点抽象类继承另外一个抽象类时,抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。<? abstract class User { protected $sal = 0; abstract function getSal(); abstract function setSal($sal); } abstract class VipUser extends User { } ?>抽象类在被继承后,其
-
Java 抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。抽象类在Java语言中使用abstract class来定义抽象类。如下实例:Employee.java 文件代码:/ 文件名 : Employee.java /public abstract class Employee{private String name;private String address;private int number;p
-
php-ood抽象类<?php----抽象类可以规范定义方法//abstract抽象类,抽象方法//抽象类中至少有一个抽象方法,否则不是抽象类//抽象方法中不允许出现{}abstractclass book{//抽象方法必须要有abstract关键字,否则会报下面的错//Fatal error: Non-abstract methodbook::fun1() must contain body in C:\wamp\php\php\21.php on line 6abstractfunction fun1();}----抽象类实例化//抽象类不允许被实例化的,只能被继承class book1 extends book{//派生类要重载所有的抽象方法才可以实例化function fun1(){echo'here is abstractfunction fun1()\'s extends';}}$b1=new book1();echo$b1->fun1();?>http://l
-
抽象类,接口抽象类抽象类是用abstract修饰的类抽象类的特点1.有抽象方法的类一定是抽象类,方法同样被abstract修饰,抽象方法没有方法体;2.抽象类中也可以有普通方法3.抽象类中不一定有抽象方法 4.子类继承一定要重写父类的所有抽象方法,3.接口 1.接口用interface修饰 2.接口定义了一套规则4.接口的特点 1.接口中的类都是抽象类 2.接口中的成员变量都是常量,一般来说接口里面不会放成员变量,基本上都是方法5.接口和类的区别 1.接口可以多继承;类与类只能单继承,多层继承;
抽象类相关课程
抽象类相关教程
- Java 抽象类 本小节我们将学习 Java 中的抽象类,你将了解到抽象类的概念和特点,抽象类在程序设计时的应用场景,什么是抽象方法,抽象方法有什么特点,如何声明一个抽象方法等内容。
- 6. 抽象类 抽象类作为其它派生类的基类使用,它们一般不会直接被实例化,不同于接口,抽象类可以包含成员的实现细节。abstract 关键字是用于定义抽象类和在抽象类内部定义抽象方法。abstract class Animal { abstract makeSound(): void; move(): void { console.log('roaming the earch...'); }}const animal = new Animal() // Error, 无法创建抽象类实例通常我们需要创建子类继承抽象类,将抽象类中的抽象方法一一实现,这样在大型项目中可以很好的约束子类的实现。class Dog extends Animal { makeSound() { console.log('bark bark bark...') }}const dog = new Dog()dog.makeSound() // bark bark bark...dog.move() // roaming the earch...
- 1.1 抽象类声明 在 Kotlin 中抽象类的声明使用 abstract 关键字,抽象类中方法使用 abstract 声明抽象方法。//以Random.kt源码为例public abstract class Random {//使用abstract关键声明一个抽象类Random public abstract fun nextBits(bitCount: Int): Int //与Java一样使用abstract声明一个抽象类中抽象方法,所以子类必须要实现该方法 public open fun nextInt(): Int = nextBits(32)//open表示这个类可以被子类重写 public fun nextInt(until: Int): Int = nextInt(0, until)//由于Kotlin默认是final且没有显式open,所以该方法不能被子类重写 ...}
- 3. 抽象方法 抽象类中可以包含抽象方法,它是没有具体实现的方法。换句话说,与普通方法不同的是,抽象方法没有用 {} 包含的方法体。抽象类可以定义一个完整的编程接口,从而为子类提供实现该编程接口所需的所有方法的方法声明。抽象类可以只声明方法,而不关心这些方法的具体实现,而子类必须去实现这些方法。上面我们将 Pet 父类改为了抽象类,其中包含了 eat 方法的具体实现,而实际上这个方法是不需要具体实现的,每种宠物都有各自的具体实现。此时,就可以将 eat 方法改为抽象方法:abstract class Pet { abstract void eat();}我们可以看到抽象方法使用 abstract 关键字声明,它没有方法体,而直接使用 ; 结尾。子类必须实现父类中的抽象方法,假如 Dog 类继承了抽象类 Pet,但没有实现其抽象方法 eat:class Dog extends Pet {}编译执行代码,将会报错:Dog.java:1: 错误: Dog不是抽象的, 并且未覆盖Pet中的抽象方法eat()public class Dog extends Pet { ^1 个错误上述报错中可知,如果我们不想在 Dog 中重写抽象方法 eat(),那么可以将 Dog 也改为抽象类:abstract class Dog extends Pet {}抽象方法不能是 final、static 和 native 的;并且抽象方法不能是私有的,即不能用 private 修饰。因为抽象方法一定要被子类重写,私有方法、最终方法以及静态方法都不可以被重写,因此抽象方法不能使用 private、final 以及 static 关键字修饰。而 native 是本地方法,它与抽象方法不同的是,它把具体的实现移交给了本地系统的函数库,没有把实现交给子类,因此和 abstract 方法本身就是冲突的。
- 2. 为什么需要抽象类 当某个父类只知道其子类应该包含什么方法,但不知道子类如何实现这些方法的时候,抽象类就派上用场了。使用抽象类还有一个好处,类的使用者在创建对象时,就知道他必须要使用某个具体子类,而不会误用抽象的父类,因此对于使用者来说,有一个提示作用。例如,父类 Pet 被子类 Cat 和 Dog 继承,并且都重写了父类的 eat 方法:class Pet { // 定义方法 eat public void eat() { System.out.println("宠物都会吃东西"); }}class Dog extends Pet { // 继承父类 // 重写父类方法 eat @Override public void eat() { System.out.println("狗狗吃狗粮"); }}class Cat extends Pet { // 继承父类 // 重写父类方法 eat @Override public void eat() { System.out.println("猫猫吃猫粮"); }}小猫类、小狗类这些子类都重写了宠物类中的 eat 方法,我们知道每种宠物都有吃的行为,宠物表示了一个抽象的概念。那么宠物类的实例化和方法调用就没有了实际意义:Pet pet = new Pet();pet.eat();我们知道了抽象类不能被实例化,此时可以将父类设定为抽象类,使用 abstract 关键字来声明抽象类,abstract 关键字必须放在 class 关键字前面 :// 声明抽象类abstract class Pet { ...}如果你尝试实例化抽象类 Pet,编译器将会报错:Pet.java:4: 错误: Pet是抽象的; 无法实例化 new Pet(); ^1 个错误使用抽象类,我们既可以通过父类和子类的继承关系,来限制子类的设计随意性,也可以避免父类的无意义实例化。
- 6. 接口和抽象类的区别 接口的方法默认是 public ,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法;接口中除了 static 、final 变量,不能有其他变量,而抽象类可以;一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口;接口方法默认修饰符是 public ,抽象方法可以有 public 、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!);从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。
抽象类相关搜索
-
c 正则表达式
c string
c 编程
c 程序设计
c 程序设计教程
c 多线程编程
c 教程
c 数组
c 委托
c 下载
c 线程
c 语言
caidan
cakephp
call
calloc
calu
camera
caption
case语句