于11-8日晚测试
1.类的继承
1.子类只能继承父类的非私有的方法、变量、常量等
2.父类的私有变量子类可以继承,但是不能直接使用
子类继承父类,子类创建对象之后,它依然有父类私有变量的实例域,但是不能直接调用,可以在父类中写访问方法来访问实例域
3.super关键字
super关键字有一种用法,使用在构造方法内使用super(参数,参数)的方法可以来构造对象
(此处为理解清楚,等待补充)
2.toString方法
1.toString方法的重写方式: public String toString(){//重写内容}
2.在使用System.out.println()的时候,默认调用toString()方法
System.out.println(Test.toString()); 和 System.out.println(Test);无异
3.另外需要补充的一点是,只要对象与一个字符串通过 + 连接,Java编译器就会自动调用toString方法
4.数组调用 String s = Arrays.toString(数组名) 这种方式的办法将直接遍历(存疑)输出数组,而不是地址
3.对象数组
1.类名 数组名[] = new 类名[] 的方式创建对象数组
2.子类构造出的对象可以存放的父类构造的数组中,但是子类构造的数组不能存放父类构造的对象
以上很乱,而且理解不到位,待整理
代码如下
package zhong.jqing;
public class Test_extends {
public static void main(String args[]){
Student stu = new Student("钟镜清",20);
Student stu1 = new Student("镜清",20);
Student mate = new Student("钟镜清",20,"中敬清");
// System.out.println(stu.getName());
System.out.println("我的姓名是:" + mate.getName() + "我的学号是:" + mate.getNum() +
"我有一个同学他叫:" + mate.getClassmate());
// 这里是instanceof的使用,这个语句的作用是判断某个对象是否属于某个类
// System.out.println(stu instanceof Student);
// System.out.println(stu instanceof Person);
//测试重写之后的toString方法
Person person = new Person("钟镜清",20);
System.out.println(person.toString()); //这里的.toString可以省略
//创建一个Person类数组,将Student类的对象放到Person中,并遍历输出
Person[] students = new Person[3];
students[0] = stu;
students[1] = stu1;
students[2] = mate;
// students[3] = stu; ArrayIndexOutOfBoundsException
for(Person student : students){
System.out.println(student);
}
}
}
class Person{
private String name;
private int num;
public Person(){}
public Person(String name, int num){
this.name = name;
this.num = num;
}
@Override
public String toString(){
return name + num;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setNum(int num){
this.num = num;
}
public int getNum(){
return num;
}
public void study(){
System.out.println("我正在学习呢");
}
}
class Student extends Person{
String classmate;
public Student(String name, int num){
super(name,num);
}
public Student(String name, int num, String classmate){
super(name,num);
this.classmate = classmate;
}
@Override
public String toString(){
return getName() + getNum() + getClassmate();
}
public void setClassmate(String classmate){
this.classmate = classmate;
}
public String getClassmate(){
return classmate;
}
public void printClassmate(){
System.out.println("我有一个同学他叫:" + classmate);
}
@Override
public void study(){
System.out.println("Test Method Rewriting");
}
}