Java类、继承、多态
来源:互联网 发布:软件招聘网 编辑:程序博客网 时间:2024/06/07 05:52
重点内容:动态绑定。多态。反射。
强制类型转换:
1、只能在继承层次内进行类型转换。
2、在将超类转换成子类之前,应该适用instanceof进行检查。
Java中最好将类中的域(实例变量)标记为private,而方法标记为public,任何声明为privated的内容对其他类都是不可见的。这对于子类来说也完全适用,即子类也不能访问超类的私有域。
Java中的protected属性的访问权限:Java中的受保护部分对于所有子类及同一个包下的所有其他类都可见。与C++的保护机制不同,Java中的protected的概念要比C++中的安全性差。
抽象类 abstract:
抽象类中的方法若定义为abstract时,此类为抽象类,切抽象方法不需要填写(为空),留给子类去实现。
仅对本类可见: private
对所有类可见: public
对本包和所有子类可见:protected
对本包可见: 默认 ,所谓默认是指没有标明任何修饰符的情况,这是一种不太受欢迎的形式。
Object类:
在Java中,只有基本类型不是对象,例如:数值,字符和布尔类型的值都不是对象。所有的数组类型,不管是对象数组还是基本数据类型的数组都扩展与Object类。C++中没有根类。
Equals方法:
Object类中的equals方法用于检测一个对象是否等于另外一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。然而,对于大多数类来说,这种判断并没有什么意义。我们采用的equals的方法都是经过重写的equals方法。
String类重写了equals方法,只要字符串内容相等,就表示相等。
class Employee { public boolean equals(Object otherObject){ if (this == otherObject) return true; if(otherObject == null) return false; if(otherObject == null) return false; if(this.getClass() != otherObject.getClass()) return false; Employee other = (Employee)otherObject; return name.equals(other.name) && salary == other.salary ; }}
String str1 = "Hello";String str2 = "Hello";//这是因为str1和str2确实指向同一个对象。String str3 = new String("Hello"); System.out.println(str1.equals(str2));//true System.out.println(str1.equals(str3));//true System.out.println(str1 == str2);//true System.out.println(str1 == str3);//false
当一个方法调用完成之后,栈里面为它分配局部变量的所有空间消失:加深理解,当构造方法调用的时候,传递参数给成员变量的时候,分配完成后,栈中的局部变量消失。
形参和局部变量一样对待,当方法执行完成之后,局部变量和形参都消失,但是形参或者局部变量所引用的对象不一定立即消失,可能在GC工作的时候处理完成。
- Java类、继承、多态
- 十三、java类的封装、继承、多态
- java [继承]-[接口]-[抽象类]-[多态]-[Object]
- Java中的继承,多态,抽象类
- java的继承 多态 类和接口
- java之继承、多态、抽象类
- JAVA 继承、多态
- JAVA 封装, 继承, 多态
- JAVA-day04-继承、多态
- java 接口,继承,多态
- Java继承 封装 多态
- JAVA 封装 继承 多态
- Java-继承、多态
- java 重载、继承、多态
- JAVA封装,继承,多态
- JAVA 封装、继承、多态
- Java接口 继承 多态
- java封装、继承、多态
- 【友元类】友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的
- hdu 3829 Cat VS Dog
- Android中的用户词库——UserDictionry
- POJ 2309 BST
- NIT 1464
- Java类、继承、多态
- C# 拖放操作源码详解
- Struts2数据传输的背后机制:ValueStack(值栈)
- 【错误】android invalid command-line parameter: Files. Hint: use '@foo' to launch a virtual device name
- Android通过http协议POST传输方式
- LINUX系统上JDK的安装
- Socket并行连接数量
- OpenGL编程指南-->深度缓冲区原理以及为什么要用它
- 分享下EditPlus软件正则表达式如何写