static & abstract

 

不能放在一起的修饰符:final和abstract,private和abstract,static和abstract,因为abstract修饰的方法是必须在其子类中

实现(覆盖),才能以多态方式调用,以上修饰符在修饰方法时期子类都覆盖不了这个方法,final是不可以覆盖,private是不能

够继承到子类,所以也就不能覆盖,static是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,

而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。

try 语句块不可以独立存在,必须与 catch 或者 finally 块同存
更改system用户默认表空间的语句是()
alter user system default tablespace xxx

唯一性约束指表中一个字段或者多个字段联合起来能够唯一标识一条记录的约束。联合字段中,可以包含空值。

注:在Oracle中,唯一性约束最多可以有32列。

唯一性约束可以在创建表时或使用ALTER TABLE语句创建。
在表中(主键约束)约束只能有一个
唯一约束要求每个字段不能有重复值,可以有空值,但是空值只能有一个。
设置检查约束的字段可以有多个空值
设置外键约束时,主表的字段必须是主键,因此不能为空值。从表中外键字段的值必须来自主表中的相应字段的值,或者为空值,空值可以有多个。
distinct可以去除多余的行
静态代码块。
随着类的加载而执行。而且只执行一次。
作用:
用于给类进行初始化。
static的特点:
1, static是一个修饰符,用于修饰成员。
2, static修饰的成员被所有的对象所共享。
3, static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4, static修饰的成员多了一种调用方式,就可以直接被类名所调用 类名.静态成员 。
5, static修饰的数据是共享数据,对象中的存储的是特有数据。
成员变量和静态变量的区别?
1,两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2,调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3,别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
4,数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
静态使用的注意事项:
1,静态方法只能访问静态成员。 (非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。

转载于:https://www.cnblogs.com/zx3707/p/6078518.html

### public static abstract 关键字组合的用法和含义 #### C# 中 `public static abstract` 的特性 在 C# 中,`public static abstract` 这种关键字组合并不合法。具体来说,在 C# 语法中,静态成员(由 `static` 定义)不允许被标记为抽象 (`abstract`)。这是因为静态成员属于本身而不是其实例,而抽象成员则要求子提供具体的实现版本[^1]。 然而,如果仅考虑 `public abstract` 或者单独使用这些修饰符,则有如下解释: - **Public**: 表明该成员对外部完全开放访问权限。 - **Abstract**: 声明一个没有实际功能体的方法或属性,强制任何非抽象派生都必须给出自己的实现方式。 因此,在 C# 中常见的做法是在抽象里定义公共抽象成员,例如: ```csharp // 抽象 Shape 可以拥有多个不同的形作为它的子 public abstract class Shape { // 此处定义了一个公开且抽象的方法 Draw() public abstract void Draw(); } ``` 对于 Java 来说情况有所不同,自 JDK8 开始支持默认方法(default methods),这使得接口能够包含带有默认实现的方法。尽管如此,Java 并不允许可同时声明为 `static` 和 `abstract` 成员;但是可以在接口内创建静态方法以及抽象方法。 #### 合理替代方案 当希望模拟似于 "public static abstract" 功能时,通常会采用以下几种模式之一: - 利用接口配合默认实现来达到目的; - 创建工具中的工厂方法或其他辅助逻辑; - 设计不可变对象并通过嵌套私有的构造函数控制实例化过程。 例如,在 C# 中可以通过接口加扩展方法的方式间接实现某些似的效果: ```csharp using System; namespace ExampleNamespace { /// <summary> /// 接口 IFoo 提供了一些操作契约 /// </summary> public interface IFoo { string GetData(); } /// <summary> /// 扩展 FooExtensions 添加了静态帮助方法给IFoo型的对象 /// </summary> public static class FooExtensions { public static string GetStaticData(this IFoo foo) => "This is a static-like method result."; } } class Program { static void Main(string[] args) { var myFoo = new ConcreteFoo(); // 实现了IFoo接口的具体 Console.WriteLine(myFoo.GetStaticData()); // 调用了扩展方法GetStaticData } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值