Java SE 03 面向对象-上
来源:互联网 发布:百度云盘mac历史版本 编辑:程序博客网 时间:2024/06/05 15:03
3.1类和对象
3.1.1 定义类
类 某一批对象的抽象;对象 一个具体存在的实体
定义类的语法
[修饰符] class 类名{ 零个到多个构造器定义... 零个到多个成员变量... 零个到多个方法...}
若未给一个类编写构造器,则系统会为该类提供一个默认的构造器,一旦编写了构造器,系统将不再提供构造器
定义方法的语法格式
[修饰符] 方法返回值类型 方法名 (形参列表){ //由零条到多条可执行性语句组成的方法体}
static 是一个特殊的关键字,可用于修饰方法、成员变量等成员。static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,
构造器语法
[修饰符] 构造器名 (形参列表){ //由零条到多条可执行性语句组成的构造器执行体}构造器不能定义返回值类型。
3.1.2 对象的产生和使用
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。
Person p = new Person();
Java的对象大概有如下作用,访问对象的实例变量,调用对象的方法。static修饰的方法和成员变量,即可通过类来调用,也可通过实例调用,没有static修饰的,只可通过实例调用。
3.1.3 对象、引用和指针
Person p = new Person();
这行代码创建一个Person实例,亦被称为Person对象,这个对象被赋给p变量。程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的Person对象,而真正的Person对象则放在堆(heap)内存中。
堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象,
Person p2 = p;
3.1.4 对象的this引用
- 构造器中引用该构造器正在初始化的对象
- 在方法中引用调用该方法的对象
3.2 方法详解
- 方法的参数传递机制
Java中方法的参数传递方式只有一种:值传递, - 方法重载
允许用同一个类里定义多个同名方法,只要形参列表不同就行。称为方法重载。
3.3 成员变量和局部变量
3.3.1 成员变量和局部变量
成员变量指在类里定义的变量,局部变量指的是在方法里定义的变量。成员变量被分为类变量和实例变量。
类变量的作用域比实例变量的作用域更大,同一个类的所有实例访问类变量时,实际上访问的是该类本身的同一个变量,也就是说访问了同一片内存区。
3.4 隐藏与封装
3.4.1 理解封装
封装(encapsulation)是面向对象的三大特征之一,
3.4.2 使用访问控制符
- private(当前类访问权限) 这个成员只能在当前类的内部被使用,适合用来修饰成员变量
- default(包访问权限)可被相同包下的其他类访问。
- protected(子类访问权限) 同一个包中的其他类,也可以被不同包中的子类访问
- public(公共访问权限)
3.4.3 package import import static
…
3.5 深入构造器
…
3.6 类的继承
3.6.1 继承的特点
通过extends关键字实现
java的子类不能获得父类的构造器
3.6.2 重写父类的方法
子类扩展了父类,子类是一个特殊的父类。大部分时候,子类总是以父类为基础,额外增加新的成员变量和方法。但有一种情况,子类需要重写父类的方法,
子类包含与父类同名方法的现象被称为方法重写(override),要遵循“两同两小一大”规则
方法名相同,形参列表相同,子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法抛出的异常类应比父类方法声明抛出的异常类更小或相等。子类方法的访问权限应比父类方法的访问权限更大或相等。
子类覆盖父类方法后,子类对象将无法访问父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法。使用super调用
3.6.3 super限定
3.6.4 调用父类构造器
在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用完成。
class Base{ public double size; public String name; public Base(double size , String name){ this.size = size; this.name = name; }}public class Sub extends Base{ public String color; public Sub(double size , String color){ super(size , name); this.color = color; }}
3.7 多态
Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。 编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态(polymorphism)
3.7.1 多态性
BaseClass polymophic =new Subclass();
编译类型BaseClass,运行时类型SubClass,当运行时调用该引用变量时的方法时,其方法行为总是表现出子类方法的行为特征,
这就可能出现:相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。
3.7.2 引用变量的强制类型转换
…
3.8 继承组合
…
3.9 初始化块
- Java SE 03 面向对象-上
- java se 面向对象
- JAVA SE面向对象
- Java Se----面向对象
- Java Se----面向对象
- java SE 面向对象基础
- JAVA SE 面向对象笔记
- 【Java SE】面向对象基础
- Java SE 2.面向对象
- Java SE学习笔记-面向对象
- Java SE 学习---面向对象程序设计
- java SE基础整理(面向对象)
- Java Se----面向对象(封装、继承)
- Java Se----面向对象(多态)
- 2 java se(2)----面向对象
- 【Java SE】面向对象高级特性
- Java SE 面向对象之封装
- Java SE 面向对象之继承
- {题解}[jzoj5101]【GDOI2017 day2】凡喵识图
- 加密解密(三)--Java中的非对称加密算法
- 数学科普
- Windows下安装XGBoost(python基于Anaconda2)
- linux常用命令
- Java SE 03 面向对象-上
- JS事件--事件对象之DOM中的事件对象
- windows在python安装使用xgboost走了些弯路
- 浏览器兼容性问题
- Windows的全新设计语言Project Neon
- 中国计算机学会推荐国际学术会议
- 面试题之--大数据
- Hibernate之query
- C语言字符数组和字符串