【零基础 快速学Java】韩顺平 零基础30天学会Java

访问修饰符
- java提供四种访问控制修饰符号控制方法和属性的访问权限
1.公开级别:用public修饰,对外公开。
2.受保护级别:用protected修饰,对子类和同一个包中的类公开。
3.默认级别:没有修饰符号,向同一个包的类公开。
4.私有级别:用private修饰,只有类本身可以访问,不对外公开。
面向对象编程-继承
- 继承的深入讨论/细节问题
1.子类继承了所有的属性和方法,但是私有属性和方法不能在子类里直接访问,要通过公共的方法去访问。
二,对象的多态
(1)一个对象的变异类型和运行类型可以不一致。
(2)编译类型在定义对象是,就确定了,不能改变。
(3)运行类型是可以改变的。
(4)编译类型看 = 的左边,运行类型看 = 的右边。
- 调用对象方法时,依照的是运行类型。
- 父类可以指向(接收)子类的对象。
多态的向上转型
- 本质:父类的引用指向了子类的对象。
- 语法:父类类型 引用名 = new 子类类型();
- 特点:编译类型看左边,运行类型看右边。
可以调用父类中的所有成员(需遵守访问权限)
不能调用子类中的特有成员。(因为在编译阶段,能调用那些成员,是由编译器决定的。)
最终运行效果看子类的最终实现。(调用方法是,按照从子类开始查找方法。)
------------------------------------------------------------
多态的向下转型
- 语法:子类类型 引用名 = (子类类型)父类引用;
- 只能强转父类的引用,不能强转父类的对象。
------------------------------------------------------------
属性重写问题
1、属性没有重写之说,属性的值看编译类型。
eg:
class Base {//父类
int count = 10;//属性
}
class Sub extends Base {//子类
int count = 20;//属性
}
Bse base = new Sub();
bace.count;//10
2、instanceof 比较操作符,用于判断对象的运行类型是否为 xx 类型或 xx 类型的子类型。
-----------------------------------------------------------
调用属性看编译类型,调用方法看运行类型。
-----------------------------------------------------------
动态绑定机制
- 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定。
- 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。
=================================
三,多态的应用
多态数组
=================================
四,Object类详解
equals方法
== 是一个比较运算符
1.==:既可以判断基本数据类型,又可以判断引用类型。
2.==:如果判断基本类型,判断的是值是否相等。
3.==:如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象。
4.equals:是Object类中的方法,只能判断引用类型。
- hashCode方法
- 提高具有哈希结构的容器的效率。
- 两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!
- 两个引用,如果指定的是不同对象,则哈希值是肯定不一样的。
- 哈希值主要是根据地址号来的,不能将哈希值等价于地址。