一,super和this的含义以及用法。
1.super:代表父类的储存空间标识(可以理解为父亲的引用)。
2.this:代表当前对象的引用(谁调用就代表谁)。
this.成员变量() super.成员变量()
this.成员方法名() super.成员方法名()
(1)this能出现在实例方法和构造方法中;
(2)this的语法是“this.”和“this()”;
(3)this不能出现在静态方法中;
(1)super能出现在实例方法和构造方法中。
(2)super的语法是“super.”和“super()”。
(3) super不能出现在静态方法中。
/**
* @author 高影 2022/11/20 21:11
* @version 1.0
*/
public class Student {
public void study(){
System.out.println("学习");
}
}
/**
* @author 高影 2022/11/20 21:11
* @version 1.0
*/
public class Student01 extends Student{
public void study(){
System.out.println("我们在教师学习");
}
public void test(){
this.study();
super.study();
}
}
super和this区别是:this可以看做一个引用变量,保存了该对象的地址,是当前对象整体,而super代表的是父类型特征,是子类局部的一些东西,这些继承过来的东西已经在子类里面了,你可以输出整体this,但不能输出父类型特征super。因为super指向的东西不是一个整体,没法打印输出。
二,抽象类
普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。
概念:拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。
抽象方法 是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
三,接口
概念:接口使用interface关键字,接口的使用,不能创建对象就可以实现类似于被继承,一个实现接口的类需要实现接口中所有的抽象方法,创建该类的对象,就可以调用该方法了,否者他必须是一个抽象类。
四,多态
概念:多态是面向对象程序设计的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异。
多态的好处:
1.多态可以让我们不用关心某个对象到底具有是什么类型,就可以使用该对象的某些方法。
2.提高了程序的可扩展性和可维护性。
/**
* @author 高影 2022/11/20 21:42
* @version 1.0
*/
public class Animal {
//创建父类的普通方法
public void play(){
System.out.println("动物");
}
}
/**
* @author 高影 2022/11/20 21:42
* @version 1.0
*/
public class Cat extends Animal{
//添加重写的方法
public void play(){
System.out.println("小猫在玩耍");
}
//添加子类特有的功能
public void sleep(){
System.out.println("小猫在睡觉");
}
}
/**
* @author 高影 2022/11/20 21:42
* @version 1.0
*/
public class Dog extends Animal{
//添加重写的方法
public void play(){
System.out.println("小狗在玩耍");
}
//添加子类特有的功能
public void eat(){
System.out.println("小狗在吃东西");
}
}
/**
* @author 高影 2022/11/20 21:42
* @version 1.0
*/
public class Test02 {
public static void main(String[] args) {
//创建对象
Animal an = new Animal();
Cat c = new Cat();
Dog d = new Dog();
an.play();//调用父类自己的功能
c.play();//调用子类重写的功能
d.play();//调用子类重写的功能
c.sleep();//调用子类自己特有的功能
d.eat();//调用子类自己特有的功能
}
}
这是以上运行出来的结果。