1.getClass与getName的简单使用
getClass() 返回此 Object 的运行时类。
注:getClass()不能被重写
getName()方法 用于返回类的名称。
如:
public class Lian {
public static void main(String[] args) {
Lian ss = new Lian();
Class a = ss.getClass();
System.out.println(a);
System.out.println(a.getName());
}
}
输出:
2.有关toString()的自动调用
最近看书的时候看到了这么遗传代码
public class Stu{
String name;
int age;
public Stu(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return "我叫"+name+",今年"+age+"岁。";
}
public static void main(String args[]){
Stu s1=new Stu("张三",16);
System.out.println(s1);
Stu s2=new Stu("李四",17);
System.out.println(s2);
}
}
它的输出是:
我一看,不对啊,它都没调用toSting()这个方法,那是这么输出toString里的东西的。经过查询才明白toString()是自动执行的,它遇到“println”之类的输出方法时会自动调用,不用显式打出来。
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。
它通常只是为了方便输出,比如System.out.println(xxxx),括号里面的“xxxx”如果不是String类型的话,就自动调用xx的toString()方法将其转化为String类型。其实就是方便输出的。
有参考链接:点击此处
向上转型
向上转型:将子类类型的对象转换为父类类型的对象,即将子类类型的对象赋值给父类类型的对象。子类可以继承父类的所有方法与属性(包括是private修饰的);
(以上概念没懂没关系,理解下面这句话就行)
当父类引用子类实例时,父类引用变量可以访问子类中属于父类的属性和方法,但是不能访问子类独有的属性和方法
还不理解也没关系,看看实际举例:
public class Personal{
String gender="男";//父类的属性
public void name(){//父类的方法
System.out.println("张三");
}
public void age(){//父类的方法
System.out.println("19");
}
}
class Student extends Personal{
int score=50;//子类的属性
public static void main(String []args){
Personal p1=new Student(); //父类引用为p1
p1.name();//父类引用调用父类的方法
System.out.println(p1.gender);//父类引用调用父类的属性
p1.age();//父类引用调用父类的方法
//p1.xh();//父类引用调用子类的方法
//System.out.println(p1.score);//父类引用调用子类的属性
}
public void xh(){//子类的方法
System.out.println("10086");
}
}
运行结果如图:
与加粗字体 当父类引用子类实例时,父类引用变量可以访问子类中属于父类的属性和方法 对应。
但如果去掉以下两行的 “//"
//p1.xh();//父类引用调用子类的方法
//System.out.println(p1.score);//父类引用调用子类的属性
则会报错
与加粗字 但是不能访问子类独有的属性和方法 相照应。
3.有关向上转型与向下转型
向下转型
首先必须明白一件事:并不是所有的对象都可以向下转型,只有当这个对象原本就是子类对象通过向上转型得到的时候才能够进行向下转型。
如:正确代码:
Person person=new Student();
Student student=(Student) person;//强制类型转换
错误代码1:(编译无错)
Person person=new Person();
Student student=(Student) person;
错误代码2:(编译无错)
person是由Teacher向上转型得到的,强制转换Student型会失败
Person person=new Teacher();
Student student=(Student) person;