JavaSE基础(18) 继承

继承

概念

生活中我们经常听到一些名词,譬如富二代,官二代,红二代,穷二代,农二代等等,它代表中人与人之间的一种关系。那么程序当中怎么表示这种关系呢?

概念:描述两个类的关系的。在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类(派生类,SubClass),现有类被称作父类(超类,SuperClass),子类会自动拥有父类所有非私有的属性和方法

意义:

        A:避免重复的代码。(从子类的角度)

        B:扩展类的功能。(从父类的角度)

继承性:子类,父类。存在继承关系。

        子类对象,可以直接访问父类的非私有的属性和方法。(避免重复代码)

        子类也可以新增自己的属性和方法。(扩展类的功能)

        子类可以重新实现父类已有的方法。(扩展类的功能)

语法:

        父类:A类

        子类:B类 extends 父类A

语法结构:

class 父类{

}

class 子类 extends 父类{

}

extends 关键字:表示两个类是继承关系。

public class Person {
    String name;
    int age;

    public void eat(){
        System.out.println("吃东西。。。。。");
    }

    public void sleep(){
        System.out.println("睡觉");
    }
}

/**
  * extends关键字:表示两个类是继承关系。
  */
public class Student extends Person{

    String school;

    //@Override可以不加,但是如果加上,子类的重写的方法一定要和父类的那个方法名相同
    public void eat(){
        System.out.println("学生吃东西。。。。。");
    }

    public void study(){
        System.out.println("学习了。。。。。");
    }

}

        //父类的创建
        Person p1 = new Person();
        p1.name = "乔布斯";
        p1.age = 55;
        p1.eat();
        p1.sleep();
        //p1.study();父类无法访问子类新增的方法和属性
        
        Student stu = new Student();
        stu.name = "小学生";
        stu.age = 34;
        stu.eat();
        stu.sleep();
        stu.school = "清华";
        stu.study();//子类肯定可以访问新增的方法

继承中的构造方法

public class Animal {
    private String type;
    int age;
    String color;

    public Animal(){
        System.out.println("父类Animal无参构造函数......");
    }

    public Animal(String type, int age, String color) {
        System.out.println("父类Animal有参构造函数......");
        this.type = type;
        this.age = age;
        this.color = color;
    }

    public void eat(){
        System.out.println("动物吃东西.....");
    }

    public void print(){
        System.out.println("type:"+type+";age:"+age+";color:"+color);
    }
}
//继承父类非私有的属性和方法
public class Cat extends Animal{

    public Cat(){
        System.out.println("子类Cat无参构造......");
    }

    public Cat(String type,int age,String color,String name){
        super(type,age,color);//super()指代父类构造函数的时候,也只能放在第一句,如果显式调用了某个构造函数,就不会默认调用无参构造了
        System.out.println("子类Cat有参构造函数......");

//        this.age = age;
//        this.color = color;
        this.name = name;
    }

    //新增一些属性和方法
    String name;

    //重新实现父类的方法
//    @Override//相当于加了约束,
//    public void eat(){
//        System.out.println("猫吃鱼........");
//    }

    public void catchMouse(){
        System.out.println("抓老鼠......");
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值