继承

一、继承

1:描述一个学生类:姓名年龄学号属性,学习的方法
2:描述一个工人类:姓名年龄工号属性,工作的方法
3:描述一个人类:姓名年龄属性,说话的方法。
4:发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复故使用继承减少代码重复率。

class Person {
    String name;
    int age;

    // 静态变量(类变量)对象和对象之间的代码重复使用静态变量
    static String country = "CN";
    Person() {
    }
    void speak() {
        System.out.println(name + ":哈哈,我是人!!!");
    }
}
// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student {
    String name;
    int age;
    Student() {
    }
    void study() {
        System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
    }
}
class Worker {
    String name;
    int age;
    void work() {
        System.out.println(name + ":好好工作,好好挣钱。");
    }
}
class Demo1 {
    public static void main(String[] args) {
        Student s = new Student();
        s.name = "jack";
        s.age = 20;
        s.study();
        Worker w = new Worker();
        w.name = "rose";
        w.work();
    }
}

二、继承特点

1:描述类和类之间的关系
2:降低类和类之间的重复代码
3:降低对象和对象之间的代码重复使用静态变量
4:降低类和类之间的代码重复使用就继承

三、extends关键字

class Student extends Person {

    Student() {

    }
    void study() {
        System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
    }
}
继承细节;

1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类
2:子类并不能继承父类中所有的成员
3:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方
法都可以通过子类名.父类静态成员的形式调用成功。
4:所有的私有成员不能继承,private修饰的成员。
5:构造函数不能被继承

四、super关键字

作用:
1:主要存在于子类方法中,用于指向子类对象中父类对象。
2:访问父类的属性
3:访问父类的函数
4:访问父类的构造函数

五、重写(覆盖 override)

1、 在继承中,子类可以定义和父类相同的名称且参数列表一致的函数,将这种函数
称之为函数的重写.
2、前提
(1):必须要有继承关系
3、特点
(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。可以通过super关键字进行父类的重写函数的调用。
(2): 继承可以使得子类增强父类的方法
4、细节
(1): 函数名必须相同
(2):参数列表必须相同
5、子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访
问权限否则编译报错
6、子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型

class Animal{
    int x=1;
    String name;
    
    void eat(){
        System.out.println("吃东西");
    }
    void shout(){
        System.out.println("我是动物");
    }
}

class Dog extends Animal{
    
    
    void eat(){
        System.out.println("啃骨头");
    }
    void shout(){
        System.out.println("旺旺");
    }
    void eat(String food){
        System.out.println("吃:"+food);
    }
}
class Cat extends Animal{
        //重写方法
    void eat(){
        System.out.println("吃老鼠");
    }
    void shout(){
        System.out.println("喵喵");
    }
}

class Demo9{

    public static void main(String[] args){
        Dog d=new Dog();
        d.shout();
        d.eat();
        
        Cat c=new Cat();
        c.shout();
        c.eat();
        System.out.println();
        }
}

六、重载(overload):

1:前提: 所有的重载函数必须在同一个类中
2:特点: 函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容