Java基础---继承

一、继承

1.继承的概念

        在Java中,继承是一种面向对象编程的特性,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。通过继承,子类可以重用父类的代码,并且可以在此基础上添加新的特性或修改继承的特性。

  • 父类:被继承的类。
  • 子类:继承其他类的类。
  • 继承关键字:在Java中,使用extends关键字来表示继承关系。
  • 继承的格式:(class 子类 extends 父类)

2.继承的示例

 创建父类Person类

package test;

public class Person {
    public int age = 18;
    public String name ="张三";
    public char sex ='男';
    public Double height = 180.5;


    public void run(){
        System.out.println("跑步");
    }
    public void jump(int num){
        System.out.println("学生跳远"+num+"米");
    }
}

创建子类Student类,使用extends关键字,使子类继承父类

package test;

public class Student extends Person{
    public void study(){    //子类自己的方法
        System.out.println("学习");
    }

}

创建Test类,测试类 

public class Test  {
    public static void main(String[] args){
        Student student = new Student();
        student.run();
        student.a();
        student.study();
        student.height = 180.0;
        
        Person person = new Person();
        person.study();   //这一行报错,父类不能用子类的方法
    }
}

注意事项

  • 继承的本质就是代码的复用,子类可以使用父类已经写好的代码,如此子类就无需重新编写此类代码了。子类可以调用所继承父类的代码,而父类无法调用子类的代码。
  • java的继承层次当中是不能互相继承的
  • 一个类可以被多个类当中父类,一个子类只能用一个父类(java仅支持单继承),不能互相继承
  • 如果父类中的方法被声明为private,则该方法在子类中是不可见的,因此不能被重写。

private为访问修饰符

3.访问修饰符不同的访问权限

本类子类同包不同包
public可以访问可以访问可以访问可以访问
protected可以访问可以访问可以访问无法访问
不写可以访问可以访问可以访问无法访问
private可以访问无法访问无法访问无法访问

public修饰的代码,本类和其他类都是可以访问的

private修饰的代码,本类使可以访问的,但是其他类不可以访问

二、方法

1.普通方法

  • 方法是有访问权限的
  • 方法必须写上返回数据的类型,如果不需要返回数据就写void
  • 在同个类当中,方法名可以相同,但是方法的签名不能相同(方法的签名=方法名+参数列表的类型)
  • 方法上可以使用其他的关键字进行修饰,比如static和final,它们有着不同的意义
void study(){
    System.out.println(1);
}
void study(int a){
    System.out.println(1);
}
void study(String b){
    System.out.println(1);
}
void study(int a,String b){
    System.out.println(1);
}

 2.方法的重载

同一个类当中方法名相同但是参数列表不同就是方法的重载

重载与方法的返回类型无关,即两个方法即使返回类型不同,但如果它们的参数列表相同,则不能构成重载。

重载的特点

  • 方法名相同:重载的方法必须具有相同的名称。
  • 参数列表不同:方法的参数列表必须不同,这包括参数的类型、数量或参数的顺序。
  • 与返回类型无关:方法的返回类型不是判断重载的依据。
  • 与访问修饰符无关:方法的访问修饰符(如public、private)也不是重载的判断条件。
void study(String b){
    System.out.println(1);
}
void study(int a,String b){
    System.out.println(1);
}

 3.方法的重写

发生在父子类当中,子类重新实现父类方法的功能

为什么会有重写?

        继承的本质是代码的复用,在复用的过程当中父类的方法的实现不一定完全适用

 

 方法重写之后,子类对象调用的也是重写后的方法

 

示例1 只继承

A类

public class A {
    public void run(){
        System.out.println("跑得快");
    }
    public void fly(){
        System.out.println("飞得高");
    }
}

B类

public class B extends A{
    
}

测试类

public class Test {
    public static void main(String[] args) {
        B b=new B();
        b.run();
        b.fly();
    }
}

输出结果为

跑得快

飞得高

用图形理解其流程

 

示例2  方法重写

A类

public class A {
    public void run(){
        System.out.println("跑得快");
    }
    public void fly(){
        System.out.println("飞得高");
    }
}

B类

public class B extends A{
    public void run(){
            System.out.println("B跑得快");
    }    
}

 测试类

public class Test {
    public static void main(String[] args) {
        B b=new B();
        b.run();
        b.fly();
    }
}

输出结果为

B跑得快

飞得高

用图形理解其流程 

 

示例3

A类

public class A {
    public void run(){
        System.out.println("跑得快");
    }
    public void fly(){
        System.out.println("飞得高");
    }
}

 B类

public class B extends A{
    public void run(){
            System.out.println("B跑得快");
    }    
}

测试类

public class Test {
    public static void main(String[] args) {
        B b=new B();
        b.run();
        b.fly();
        A a=new A();
        a.run();
    }
}

输出结果为

B跑得快

飞得高

跑得快

 用图形理解其流程 

 

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值