1.1.2JAVA语言的目标
- 面向对象、简单化、解释型与平台无关、多线程、安全高效、动态性
1.1.3java语言的实现机制
JAVA语言使用了jvm、垃圾回收机制、和java运行环境(jre)
1.jvm
Java语言的执行模式为编译加解释,编写好的java源程序由编译器转换为标准字节代码由jvm(java虚拟机)解释执行,jvm运行的 代码存储在.class文件中,每个文件最多包含一个public类的代码。
jvm具体实现:
- 加载代码:由类加载器完成。
- 校验代码:由字节码校验器完成
- 执行代码: 由解释器完成
Java程序的下载和执行步骤
(1) 源程序经编译器得字节代码
(2)浏览器和服务器连接,要求下载字节码文件
(3) 服务器将字节代码文件下载到客户机
(4)客户机上的jvm执行
(5)在浏览器上显示并交互
2.垃圾回收机制
所有的代码都封装在类中,需要时创建类的实例(对象)来处理,这种动态的实例存储在内存堆中,java有一个系统级的线程,对内存的使用进行自动跟踪。该线程能在jvm空闲时,对不用的内存进行自动回收,消除了释放内存的必要,也避免了内存的泄漏。
3.java运行环境(jre)
java语言的运行环境包括java应用程序接口(api)和jvm
java有三个平台:javaSE javame javaee。都立足于核心开发工具jdk的各种版本
1.2java语言面向对象编程
1.2.1
- 基本概念:抽象、继承、封装、多态
抽象:面向对象编程强调按照于人类思维方法中的抽象、分类、组合、封装等原则去模拟现实世界中的物理存在。
封装: 封装是面向对象技术中隐蔽信息的一种机制(类是程序封装最小单位)
继承:继承是描述两个类之间的关系:允许一个新类(称为子类)包含另一个已有类(称为父类)的状态和行为,减少类的重复说明。 子类的派生过程称为类的继承,继承是抽象类分层管理的实现机制。
继承分为单继承和多继承: 单继承指的是任何子类都只能从一个父类派生,多继承指一个子类可以由多个父类派生。在java中 除了object类外 都有父类。继承只支持单继承,多继承通过接口实现
Java中 创建一个类后可用关键字extends 去创建他的子类。
多态:多态是允许一个类中有多个同名方法,但方法的具体实现却不同的机制
多态分为重载式多态和重写式多态
重载式多态:方法名相同而参数列表不同的一组方法就是重载。在调用这种重载的方法时,通过传入不同的参数最后得到不同的结果。
重写式多态:这种多态通过函数的重写以及向上转型来实现,
向上转型
子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口。
看一个大家都知道的例子:
public class Animal {
public void eat(){
System.out.println("animal eatting...");
}
}
public class Cat extends Animal{
public void eat(){
System.out.println("我吃鱼");
}
}
public class Dog extends Animal{
public void eat(){
System.out.println("我吃骨头");
}
public void run(){
System.out.println("我会跑");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Cat(); //向上转型
animal.eat();
animal = new Dog();
animal.eat();
}
}
//结果:
//我吃鱼
//我吃骨头
这就是向上转型,Animal animal = new Cat(); 将子类对象 Cat 转化为父类对象 Animal。这个时候 animal 这个引用调用的方法是子类方法。
转型过程中需要注意的问题
- 向上转型时,子类单独定义的方法会丢失。比如上面Dog类中定义的run方法,当animal引用指向Dog类实例时是访问不到run方法的,animal.run()会报错。
- 子类引用不能指向父类对象。Cat c = (Cat)new Animal()这样是不行的。
向上转型的好处
- 减少重复代码,使代码变得简洁。
- 提高系统扩展性。
1.2.2类与包
1.类的修饰符(类的修饰符可以有多个,说明使用类的权限)
-
public:说明为公共类,被其他类访问引用成员变量和成员方法。
注意! 包含main()方法的类必须是公共类。 -
abstract:抽象类,指明不能实例化的类,定义它常常为改变他的子类而设置
-
final:终结类,指明该类不能有子类
如果类没有修饰符,说明该类具有默认访问权限,只允许与该类相同包中的类可以访问和调用,其他包不能访问和调用
2.成员变量
变量修饰符
- public:允许所有的类来访问该变量
- protected: 仅允许相同包的类和该类的子类来访问
- private:仅允许本类访问的内部变量
- static:表示该变量是类变量 不需要创建对象就可以直接通过类名访问
静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数
3.成员方法
protected、public、private表示访问权限
-
static:表示类方法可直接进行访问和调用 不用他修饰的是实例方法
-
abstract:表示抽象方法没有方法体,static方法和final都不能是abstract方法
-
synchronized:表示多个并发线程对共享数据访问的控制。
-
final:终结方法不允许子类方法覆盖
-
在类方法只能调用本身的类方法不能直接调用实例方法
-
在实例方法可直接调用类的类方法和实例方法
-
在实例方法中用this.方法名和super.方法名调用
构造方法(用来初始化对象)
- 无返回值,与类名相同
- 不能直接调用需要new自动调用
- 可分为带参不带参
Point(int x){
this.x = x;
this指向当前对象
网友评论