zoukankan      html  css  js  c++  java
  • C#&java重学笔记(面向对象)

    C#部分

    1.C#有一个internal关键字,指字段可以同一个程序集中访问,出了程序集不行。还有一个protected internal(没有先后之分)修饰词,指只能在同一个程序集中的子类访问

    2.abstract和virtual修饰词:

         abstract用来修饰类和方法,表 抽象。抽象类中的方法可以不抽象,但是抽象方法所在的类必抽象。且抽象方法不得被实现,即不能用{}表示函数体。而且抽象类只有被继承才能体现它的作用,同时子类必须override父类的抽象方法!

         virtual用来修饰方法,表 ,虚方法必须要有函数体,子类也可以不去override它直接调用。但是如果在自己的作用域中覆写,最好加上override关键字,虽然不报错,但是会报警告。虚方法的出现达成了OO的多态性。

    3.接口的继承:接口的书写和抽象方法类似,使用interface修饰词,里面定义的方法不能用{}表示出函数体。而接口中的属性只能象征性的指出get set

                       类继承接口:类继承了接口就必须要实现接口中的所有方法及属性,否则编译失败。

                       接口继承接口:继承的接口不必实现父接口中的方法,只需写出自己的属性和方法即可。

                       继承的接口间或接口与父类间方法属性重名的问题:最好不要重名!

    4.子类重写父类的方法如果父类的方法没有标记 abstract、virtual,子类重写父类方法会报出警报,但是也可以运行。

    5.父类有构造函数,子类继承后的问题:如果父类定义无参和有参的构造函数,子类按正常写法写构造函数即可。如父类忽略无参构造函数,则子类书写构造函数时需要 :base(参数名)

    6.类中的静态方法静态属性,实例和子类不能访问,只能父类自身访问。

    7.子类同时集成接口和父类的时候,父类一定要写在接口前面。java中也是一样。

    8.用abstract和sealed修饰接口是没用的。

    9.C#可以定义内部类,可以实现类的嵌套,在外部类外面声明内部类的对象,需要:classFather.classSon a=new classFather.classSon();

     Java部分:

    1.java的修饰词分为四种:public private protected 和默认权限(default),default权限也叫包权限,同一个包中的可以访问。

    2.java中没有属性的概念,对于私有字段,java会要求你定义对于私有字段的get和set方法,虽然不定义也不会报错,但是会给你警告。而在类的其他方法中为私有字段赋值是不妥的。

    3.java中的构造方法和C#中的构造方法写法一致。即和类同名,且只有一个表示权限的修饰词。

    4.java中继承使用extends关键字,C#则用:号。java也是单继承,接口多继承。继承接口使用implements关键字,多个接口用','隔开。

    5.java中没有virtual关键字,而且子类重写父类的方法也没有什么限制。

    6.java中子类继承有构造方法的父类,和C#的处理方法类似,需要用super关键字,在类体重,super(父类的构造字段); 和base类似,但是书写位置不同于base。

    7.java中没有override关键字,使重写和覆写在书写上简化。初学者易混淆。

    8.java中没有sealed关键字,和sealed相同意义的是final。但是final和sealed又不相同,final表示:值类型的空间及值不会改变,而引用类型的引用不会变,值可以被其他方法修改。

    9.java中的内部类在外部类外面声明的方法是这样的:classFather a=new calssFather();a.classSon b=new a.classSon();同时,只有顶层类可以声明static成员。如果内部类需要定义static成员,则该内部类必须声明为static,否则,一般内部类的成员不能被声明为static。

    10.java中会将基本类型封装在Wrapper类中,而JavaScript对基本类型的封装和C#类似。

    11.所谓的匿名类就是直接 new (实现的借口或父类名){something.......};这样的类及其对象只能用一次。所以在声明后需要立即调用里面的方法。如下:

    public class deleSon extends delegate
    {
        public int key=10;
        
        public void say(Object o)
        {
            System.out.println(o);
        }
                   public static void main(String args[])
        {
            deleSon obj=new deleSon();
            obj.say(new Object()
            {
            public String sayName()
            {
                return "xixi";
            }
            
          }.sayName());
            System.out.println(obj.getKey());
        }
        
    }

    12.static方法不能够被重写。

    13.java中有{}块这种东西,且最先执行。甚至还有static{} 静态块,是最先执行的。而C#中没有。

    14.java中的匿名类如果调用外部类的变量的时候该变量需要用 final修饰,已确保引用的变量不会随意更改。

  • 相关阅读:
    海伦公式
    简单的博弈
    Hello World 代码
    Hello world
    99999999海岛帝国后传:算法大会
    判断质数
    idea plantUML配置
    测试用例评审
    如何编写有效测试用例
    测试用例设计——场景分析法
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/3698011.html
Copyright © 2011-2022 走看看