super和this的含义及用法
super:代表父类的存储空间,父类的引用。
this:表示当前对象的引用,也就是说谁调用就指谁。
用法:
this.成员变量()
super.成员变量()
this.成员方法名()
super.成员方法名()
/**
* @author ZhangXiaoDie 2022/11/20 15:19
* @version 1.0
*/
public class Demo {
public void run(){
System.out.println("人会跑");
}
}
public class Demo2 extends Demo{
public void run(){
System.out.println("女孩会跑");
}
public void test(){
this.run();//调用本类的方法
super.run();//调用父类的方法
}
}
抽象类
抽象类:没有方法体的方法,包含抽象方法的方法
抽象方法
要使用abstract关键字修饰方法,抽象方法只包含一个方法名没有方法体。
意义
1,能够对子类进行约束,子类必须实现父类的抽象方法,或者子类声明为抽象类。
2,抽象类通过定义抽象方法就实现了一种规范,要求它的子类必须具备某种功能,具体如何实现以子类的具体实现为准。
接口
接口使用interface关键字,接口的使用,不能创建对象就可以实现类似于被继承,一个实现接口的类需要实现接口中所有的抽象方法,创建该类的对象,就可以调用该方法了,否者他必须是一个抽象类
定义格式
public interface 接口名称{
//抽象方法:使用关键字 abstrsct;没有方法体;可以省略;该方法供子类实现使用。
public interface InterfaceName{
public abstract void syudy();
}
//默认方法:使用default修饰;不可省略;供子类调用或者子类重写。
//静态方法:使用static修饰,接口直接调用
public interface InterfaceName{
public defaule void syudy(){
//执行语句
}
public static void syudy2(){
//执行语句
}
}
//私有方法:使用private修饰;供接口中的默认方法或者静态方法调用。
public interface InterfaceName{
private void syudy(){
//执行语句
}
}
}
多态
多态是面向对象的一个重要特征之一,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
多态的前提:
1,发生在有继承或者实现接口情况下
2,在子类中对方法进行了重写
3,父类引用指向子类对象 父类类型 变量名=new 子类对象()
多态的好处
1,多态可以让我们不用关心某个对象到底具有是什么类型,就可以使用该对象的某些方法。
2,提高了程序的可扩展性和可维护性
多态的本质
子类对象向上转型为父类引用
/*多态的前提:继承+重写*/
//创建父类
class Animal{
//创建父类的普通方法
public void eat(){
System.out.println("动物");
}
}
//创建子类1
class Cat extends Animal{
//添加重写的方法
public void eat(){
System.out.println("小猫吃东西");
}
//添加子类的特有功能
public void jump(){
System.out.println("小猫跳舞");
}
}
//创建子类2
class Dog extends Animal{
//添加重写的方法
@Override
public void eat(){
System.out.println("小狗吃东西");
}
//添加子类的特有功能
public void run(){
System.out.println("小狗跑");
}
}
public class Test {
public static void main(String[] args) {
//创建对象
Animal a = new Animal();
Cat c = new Cat();
Dog d = new Dog();
a.eat();//调用的是父类自己的功能
c.eat();//调用的是子类重写后的功能
d.eat();//调用的是子类重写后的功能
/*父类对象不可以使用子类的特有功能*/
//a.jump();//报错,Animal类里并没有这个方法
//a.run();//报错,Animal类里并没有这个方法
c.jump();//子类可以调用自己的功能
d.run();//子类可以调用自己的功能