Java 类和对象
1. 类和对象是什么
类可以理解成一个创造对象的模板,一切对象都需要从类生成。比如盖房子时,建造图纸可以类比成一个类,按照图纸建造的房子就是一个对象。按照图纸我们可以建造无数类似的房子,也就是我们可以根据这个类生成无数多的类似的对象。
2. 例子
类:
我们定义了一个Student类(注意:类的名称是大写开头,用大驼峰),类里面有成员属性 name, 方法 setName, getName, study。(注意方法及属性小写开头,用小驼峰)
//定义学生类
public class Student {
//属性
private String name;
//方法
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void study(){
System.out.println(name+"正在学习!");
}
}
对象:
我们用构造好的“图纸”-Student类,来在主程序中生成一个un对象,并且调用其方法。
public class Manage {
public static void main(String[] args){
//生成一个un对象
Student un = new Student();
un.setName("XXX");
un.study();
继承
1. 继承是什么
继承是在原“图纸”上加工得到更丰富的“图纸”,我们创建一个新的类,这个类拥有原来类的所有属性方法(包括私有,但是不能直接调用),并且可以添加新的方法和属性。
2. 例子
我们创建一个UNStudent类 继承(extends) Student类。UNStudent拥有Student类里面所有的方法和属性,并且可以自己新增方法和属性,另外可以“修改”(重写)Student类的方法。
public class UNStudent extends Student{
//1.有继承关系的两个类
public void printName(){
System.out.println("名字:"+getName());
}
//1.方法重写(覆盖)
public void study(){
System.out.println("子类重写父类的方法");
}
}
3. 重写(Overrides)
在上个例子中, UNStudent类中的 study()方法就是对父类Student中study()方法的重写。
重写需要保证 UNStudent类中的 study()方法的 返回值类型,方法名,参数类型(个数,顺序)完全一样
私有属性的继承
私有属性和方法是可以被继承到子类中的,但是在子类生成的对象中不能直接调用,那如何调用呢?在上面的例子中注意
System.out.println("名字:"+getName());
我们用了间接的方式调用私有属性name,即使用了getName的方法。
自动转型的原理
我们在主程序中做一小点修改
public static void main(String[] args){
//自动转型(向上)
Student un = new UNStudent();
un.setName("XXX");
un.study();
}
}
这里让 属于Student类型的un接收子类UNStudent生成的对象。
Java会帮我们自动转型(向上),此时un对象会从父类Student寻找需要用到的方法,若子类有重写,则用重写后的方法。
强制转型
此时un对象已经实现了自动转型(向上),那么如何让其强制转型(向下),示例如下
public static void main(String[] args){
//自动转型(向上)
Student un = new UNStudent();
un.setName("XXX");
un.study();
//强制转型(向下)
UNStudent unst = (UNStudent)un;
unst.printName();
}
}