java(继承,多态,重写,重载)

继承

子类可以继承父类的方法和变量,同时也可以增加新的东西

class AA {
    void show() {
        System.out.println("我喜欢java");
    }
    public void showOne(){
        System.out.println("我说的是假的");
    }
}
class BB extends AA{
    void show() {
        System.out.println("我喜欢C++");
    }
        public void showSecond(){
            System.out.println("我说的是真的");

    }
}
public class excends {
    public static void main(String[] args) {
        AA a=new AA();
        BB b=new BB();
        a.show();//输出我喜欢java
        b.show();//输出我喜欢C++
        b.showOne();//输出我说的是假的---可以看出BB继承了AA的方法
        b.showSecond();//输出我说的是真的
    }
}

上述AA为父类(即基类),BB为子类,子类会继承父类的方法和变量

所以当函数不一样时,子类会继承父类的方法

当方法的函数名一样时,会调用子类自身的方法;

同理 当变量父类和子类的有重名时,子类会先调用自己本身的变量

super关键字

若自身没有而父类有,则调用父类的

遇到重名的想优先调用父类的方法,可以使用super.变量名/方法---只能在子类的方法内调用

final关键字

final 关键字可以用来修饰变量、方法和类。
当 final 修饰变量的时候,那这个变量就成了常量,不能被修改。

多态

同一行为,不同状态;同一对象,不同角色

多态的前提:

  1. 类之间要有继承的关系
  2. 子类要有对父类方法的重写(不重写也不会报错,但这样体现不出来多态的意义)
  3. 父类的引用变量指向子类对象

对象多态&行为多态

public class People{
    public String name="父类";
    public void run(){
        System.out.println("人可以跑");
    }
}
public class Teacher extends People{
    public String name="Teacher子类";
    @Override
    public void run(){
        System.out.println("老师跑的气喘吁吁");
    }
}
public class Student extends People{
    public String name="Student子类";
    @Override
    public void run(){
        System.out.println("学生跑的贼快");
    }
}
public class text {
    public static void main(String[] args) {
        People p1=new Teacher();
p1.run();//编译看左边,运行看右边,即编译时看的是people类里的run函数,运行时看的是Teacher的run函数
System.out.println(p1.name);//对于变量,编译看左边,运行看左边,所以都是看people的变量
People p2=new Student();//对象多态
p2.run();//行为多态
        System.out.println(p2.name);

    }
}

因此输出结果 :

老师跑的气喘吁吁
父类
学生跑的贼快
父类

重写

标志 @Override

子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写

重载

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载

简而言之

重写发生在子类和父类之间,不能修改方法参数

重载发生在一个类之间,必须修改方法参数

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值