一、自动转型定义:子类的对象,可以自动转型为父类的类型
父类类名 变量名 = new 子类的类名();
多态性:多个同一个类型的对象,调用同一个方法,执行的过程不一样
多态出现的原因->自动转型+方法重写->建立在继承的前提下
public class Test {
public void study(){
System.out.println("学生正在学习中...");
}//学生类
public class UnStudent extends Student{
public void study() {
System.out.println("大学生正在学习中....");
}
}//大学生类
public static void main(String[] args) {
//自动转型
Student us = new UnStudent();
Student us1 = new Student();
us.study();//执行Unstudent类的 学习 方法
us1.study();//执行 Student的
}
}
二、方法分类
方法类型:普通方法、构造方法、抽象方法
普通方法:public 返回类型 方法名(参数){}
//public void eat(){}
构造方法:public 类名(参数){}
//public Student () {}
抽象方法:public abstract 返回类型 方法名(参数);
//public abstract void eat ();
三、类的分类
类的类型:普通类、抽象类、接口
普通类:public class文件名{}
抽象类:public abstract class 文件名{}
接口:public interface 文件名{}
普通类:1、方法只能是构造方法和普通方法,一定不能有抽象方法
2、可以定义变量属性,也可以定义常量属性
3、可以用来构造对象
抽象类:1、三种类型的方法都可以存在
2、可以定义变量属性,也可以定义常量属性
3、抽象类不能构造对象
接口:1、只能有抽象方法,构造方法和普通方法不能定义
2、只能是常量属性
不能构造对象//下有表
类型 常量 变量 一般方法 构造方法 抽象方法 构造对象
一般类 允许 允许 允许 允许 允许
抽象类 允许 允许 允许 允许 允许
接口 允许 允许
注意:接口是没有构造方法的
接口中的常量:static final可以省略
接口中的抽象方法:abstract单词可以省略
四、接口继承
抽象类和接口的作用:当父类,被继承,约束子类的定义
继承抽象类:extends
继承接口:implements
接口和抽象类的继承:子类如果是普通类,则必须要重写继承过来的抽象方法
注意:接口是多继承的//一个类可以继承多个接口类
this:指代一个对象:当前类的对象
如何寻找this所代表的对象:
1、看this再哪个方法中使用的
2、看哪个对象调用了此方法
结果是:调用此方法的对象就是this所指代对象