一、属性的继承与隐藏
1. 属性的继承
(1)父子类在同一包中,子类可以无条件的继承父类的所有非私有属性。
(2)父子类在不同包中,父类的被public和protected修饰的属性可以被子类继承。
2.属性的隐藏
(1)子类中出现和父类中同名属性的现象称为属性的隐藏。
所谓的隐藏是指子类中出现和父类中同名属性变量,一个继承来至父类,另一
个由子类自己定义
二、方法的继承与覆盖
1.方法的继承
(1)父子类定义在同一包中时,父类的所有非私有方法可以被子类继承
(2)父子类定义在不同包中时,父类的被public 和protected修饰的方法可以被子类继承
2.方法的覆盖
(1)子类中定义了和父类中相同的方法头称为方法的覆盖。
可以通过在方法名前使用不同的对象名或类名来加以区分调用的是父子类中的方法。
三、Object类及其常用的方法
1. java.lang.Object意思是任何类都是其子孙类,如果一个类没有明确指出它的父类,那么它的父
类就是Object。
2. public boolean equals (Object obj)方法
(1)自反性:x.equals(x) return true ;
(2)对称性:x.equals(y)为true,那么y.equals(x)也为true;
(3)传递性:x.equals(y)为true,y.equals(z)为true,那么x.equals(z)也为true;
(4)一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次,第三次,第n次调用也
为true,前提条件是在比较之间没有修改x,也没有修改y。
(5)x.equals(null)返回false。
3. public String toString()方法
就是把其他的数据类型转换成String类型,
int i=0;
String b=i.toString();这个还有另一种转换法
String b=(String)i;
来自 <http://wenwen.sogou.com/z/q62269873.htm>
四、继承关系中的构造方法及super关键字
1、代码分析:
package 第六章;
classA {
inta;
A(inta) {
this.a= a;
System.out.println("thisis A constructor");
}
}
publicclass B extends A {
B(inta) {
super(a);
System.out.println("thisis B constructor");
}
publicstatic void main(String[] args) {
Bb = new B(4);
}
}
B类的构造方法之所以要带一个int型的形参是因为子类从父类继承了一个int型的属性a;在子类中需要为其赋值。Super:该关键字代表当前类的直接父类对象,这里使用super表示调用父类的带一个参数的构造方法。
2、知识点
继承关系中构造方法的使用遵循规则:
(1)子类无条件的调用父类无参构造方法
(2)对于父类的带参构造方法,子类可以通过在自己的构造方法中使用super关键字来调用,
但是这条调用语句必须是子类构造方法中的第一条可执行语句
super关键字代表当前类的直接父类对象,super的用法有三种:
(1)在子类构造方法中可以通过super(实参)调用父类的构造方法,此时要求该语句是子类
构造方法的第一条执行语句,和this调用本类其他方法时要求一致
(2)可以在子类中通过super.父类方法调用父类中定义的方法,如果被调用方法不属于方法覆
盖时super.可以省略
(3)可以再子类中通过super.父类属性;调用父类属性,如果此属性不涉及属性隐藏时super.
可以省略
this和super不能在静态修饰的方法内使用
例子如下:
package 第六章;
classA {
inta;
A(inta) {
this.a= a;
System.out.println("thisis A constructor");
}
voidshow() {
System.out.println("thisis show method is A");
}
}
publicclass B extends A {
int a;
B(int x,int y){
super(x); //调用父类带参构造方法
a=y;
System.out.println("this is Bconstructor父类中的a:"+super.a+"子类中的a:"+a);
}
void show(){
super.show();//通过super调用父类被覆盖的方法
System.out.println("this is show methodin B");
}
public static void main(String args[]){
B b=new B(3,9);
b.show();
}
}
五、父子类对象的使用与转化
(1)子类的对象可以无条件的赋给父类引用,因为子类是从父类继承过来的,子类是一个具体
的父类而已
(2)instanceof 这个运算符前面要求是一个对象,后面要求是一个类名,作用是判断前面的对
象是不是后面类的一个实例(当对象是类的一个实例时返回true,否则返回false)
(3)知识点:
ONE 子类对象可以被视为是其父类的一个对象
TWO 父类对象不能当作其子类的一个对象
THREE 如果父类引用实际指向的是子类对象,那么该父类引用可以强制转化成子类对象使用
六、final修饰符
被final 修饰的属性和局部变量都不能被重新赋值
知识点:
(1)如果被final修饰的数据是基本的数据类型,可以将该数据认为是常量,即其值不可变
(2)如果被final修饰的是其他类的对象,可以认为是该数据和其所指向的对象之间的绑定关系不可
更改,而次数据所指向的对象是可以更改的
(3)被fianl修饰的方法在子类中不能被覆盖
(4)final修饰的类不能被继承,final类中的方法也一定是final方法
七、抽象方法和抽象类
abstract 抽象方法
特点:只有方法头没有方法体,用分号来代替方法的方法体部分
知识点:
(1)当一个类被关键字abstract修饰时,称这个类是抽象类,所谓抽象类就是没有具体事例对象的类
,定义抽象类的目的是出于对组织层次考虑。不能创建抽象类的对象
(2)当一个方法被abstract修饰符修饰时,称这个方法是抽象方法,抽象方法没有具体的方法体,需
要在子类中重新被定义的方法,需要注意的是抽象方法必须定义在抽象中,而抽象类中可以定
义非抽象方法
八、数组
数组在JAVA 中是一个类型,包括数组对象和元素
(1)数组的定义
类型【】数组名;
类型 数组名【】;
(2)数组的初始化包括两个过程
数组对象的实例化
数组元素的实例化
(3)数组对象的初始化:
对象名=new 类型【元素个数】