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

107次阅读

共计 1829 个字符,预计需要花费 5 分钟才能阅读完成。

类和对象

类文件后缀:.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));

正文完
 0