面向对象:类和对象/封装/继承/多态/抽象接口/枚举/反射/String

类和对象

类文件后缀:.java,

包(namespace):项目上右键创建

package _17bang.CD.Yz;

引入(using),注意import的是一个“类”,不是名称空间

import _17bang.YZ.Student;

但可以使用通配符 *,比如:

import _17bang.YZ.*;

没有partial类

访问修饰符:没有关键字internal(不能显式声明,默认即可,package中可见)

一个类文件只能有一个public类

static:可以由对象调用(只warning不报错)

引用类型和值类型

其他类成员

快捷键生成:alt+shift+s,

构造函数间调用:

public Student(int age) { this(); }

没有属性,只有getter和setter。所以也没有自动属性等一系列相关的语法。

private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; }

没有readonly关键字

final: 修饰变量/字段时,等同于 const

没有索引器

析构函数

protected void finalize() { }

静态和实例

没有static构造函数

顶级类不能static,内部类可以

继承

使用关键字extends表示继承,super表示基类

public class OnlineStudent extends Student { public OnlineStudent(int age) { super(age); } }

final:修饰类/方法,同sealed
instanceof:同is,没有as

Person fg = new Teacher(); System.out.println(fg instanceof Person); System.out.println(fg instanceof Teacher);

多态

没有virtual和override关键字,默认override(可用@Override标记)

没有new的hide

抽象方法和接口

没有接口的显式(explicit)实现

结构和日期

没有struct

日期使用Calendar类:

Calendar date = Calendar.getInstance(); //不能直接new出 date.set(2002, 8, 15); date.add(Calendar.YEAR, 2); System.out.println(date.get(Calendar.DATE));

格式化日期用DateFormat类:

System.out.println(DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA).format(new Date()));

枚举和位运算

不能自行设置枚举的底层数据

不能在枚举和整数类型间转换

枚举的常用方法:

Grade[] grades = Grade.values(); Grade result = Grade.valueOf("Failed"); int index = Grade.Failed.ordinal(); System.out.println("..........." + index);

Object:万物皆对象

没有值C#复杂的struct/class继承体系

反射

获得类型信息:

  • getClass(),类似于getType()
  • class属性,类似于typeof

    Class c1 = o.getClass(); Class c2 = Object.class;

注释(Annotation)

使用 @ 符号

@Override protected void Learn(double score) { super.Learn(score); }

声明,关键字是@interface

import java.lang.annotation.*; public @interface Override { }

常用标注(Annotation)

  • @Override:检查/确保当前方法是override/实现的父类/接口方法
  • @Deprecated:标记“过期”
  • @Target:指明Annotation能用于哪些目标元素
  • @Inherited

String和StringBuilder

没有内插,可用String.format()替代

System.out.println(String.format("源栈欢迎你,%s同学,你的成绩是%f分", "周丁浩", 98.5));

你可能感兴趣的:(oop)