Java基础知识学习(三)

时间:2021-09-09 03:31:48

面向对象部分

首先要了解面向对象的思想,与C#一致,都是面向对象的语言

访问修饰符

public 共有的,对所有类可见。
protected 受保护的,对同一包内的类和所有子类可见。
private 私有的,在同一类内可见。
默认的 在同一包内可见。默认不使用任何修饰符

子类继承使用"extend",而不是C#中的 ":"

class Dog

class Teddy extends Dog

子类方法的访问范围只能比父类方法的访问范围大

变量的作用域分为四个级别:

类级(C#中的静态变量,static标识)、对象实例级(类属性、字段)、方法级(方法中定义的变量)、块级(代码块中定义的变量)

Java特性

跨平台,通过JVM实现,编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。

编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。

JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。

Java包

在Java中,为了组织代码的方便,可以将功能相似的类放到一个文件夹内,这个文件夹,就叫做包。

包不但可以包含类,还可以包含接口和其他的包。

代码要引用其他包总的类,需要使用import关键字导入其他包的类

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:

  • 一个源文件中只能有一个public类。
  • 一个源文件可以有多个非public类。
  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
  • 类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。
  • 除了上面提到的几种类型,Java还有一些特殊的类,如内部类、匿名类。

继承与多态   http://www.weixueyuan.net/java/rumen_5/

1. 继承使用 extends 关键字。

2. super 关键字与this类似,this 用来表示当前类的实例,super 用来表示父类。类似C#中的base

3. 要显示调用父类的显示构造函数

4. 重载与重写,不需要overrider\overload关键字

5. 父类的变量可以引用父类的实例,也可以引用子类的实例。

Animal obj = new Animal();
obj = new Cat();
obj.cry();

 6. 动态绑定

  需要了解JVM调用方法机制 http://www.weixueyuan.net/view/6000.html

7. instanceof,判断一个变量所实际引用的对象的类型,做类型转换时需要进行判断

8. final

    • final 修饰的类不能被继承。
    • final 修饰的方法不能被子类重写。
    • final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次。
    • final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。
    • final 修饰的局部变量可以只声明不赋值,然后再进行一次性的赋值。

9. Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来。

   三个常用方法:equals()  hashCode()  toString()

主要介绍一些面向对象相关的基础知识