Java_封装/继承/super/多态

面向对象编程有三大特征

  1. 封装
  2. 继承
  3. 多态
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;

public class encap {  // 公共类的名称要与文件名一致
    public static void main(String[] args) {
        Person person = new Person();  // 创建一个person类的对象
        person.setName("asfkajsdkfajsdklfjasdllfasdf");
        person.setAge(888000);
        person.setSalary(30000);

        System.out.println(person.info());
    }
}

class Person {
    // 访问修饰符可以修饰 1.属性 2.方法 的访问权限
    public String name;  // java中的String是一个类,所以首字母大写
    private int age;
    private double salary;

    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("err");
            this.name = "886";
        }
    }
    public String getName() {
        return name;
    }

    // 设置年龄
    public void setAge(int age) {
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("您输入的年龄不对,给你。。。。。");
            this.age = 18;
        }
    }
    public int getAge() {
        return age;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public double getSalary() {
        return salary;
    }

    public String info() {
        return "name = " + name + " age = " + age + " salary = " + salary;
    }

}
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;

public class encap {  // 公共类的名称要与文件名一致
    public static void main(String[] args) {
        Person person = new Person();  // 创建一个person类的对象
        person.setName("asfkajsdkfajsdklfjasdllfasdf");
        person.setAge(888000);
        person.setSalary(30000);

        System.out.println(person.info());

        // 用那个3个参数的构造器
        // 这个方法没有用那个set来进行额外的判断,所以失效了,那怎么解决呢?
        Person smith = new Person("smith", 180000, 88888);
        System.out.println("======smith的信息========");
        System.out.println(smith.info());
    }
}

class Person {
    // 访问修饰符可以修饰 1.属性 2.方法 的访问权限
    public String name;  // java中的String是一个类,所以首字母大写
    private int age;
    private double salary;

    // 无参构造器
    public Person() {

    }

    // 有3个属性的构造器
    public Person(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("err");
            this.name = "886";
        }
    }
    public String getName() {
        return name;
    }

    // 设置年龄
    public void setAge(int age) {
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("您输入的年龄不对,给你。。。。。");
            this.age = 18;
        }
    }
    public int getAge() {
        return age;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public double getSalary() {
        return salary;
    }

    public String info() {
        return "name = " + name + " age = " + age + " salary = " + salary;
    }

}
// 包的声明,让IDE编译出的字节码文件保存在此处
// 还有检验当前文件的位置是否正确
package com.Test.enap;

public class encap {  // 公共类的名称要与文件名一致
    public static void main(String[] args) {
        Person person = new Person();  // 创建一个person类的对象
        person.setName("asfkajsdkfajsdklfjasdllfasdf");
        person.setAge(888000);
        person.setSalary(30000);

        System.out.println(person.info());

        // 用那个3个参数的构造器
        // 这个方法没有用那个set来进行额外的判断,所以失效了,那怎么解决呢?
        Person smith = new Person("smith", 180000, 88888);
        System.out.println("======smith的信息========");
        System.out.println(smith.info());
    }
}

class Person {
    // 访问修饰符可以修饰 1.属性 2.方法 的访问权限
    public String name;  // java中的String是一个类,所以首字母大写
    private int age;
    private double salary;

    // 无参构造器
    public Person() {

    }

    // 有3个属性的构造器
    public Person(String name, int age, double salary) {
        setName(name);
        setAge(age);
        setSalary(salary);
    }

    public void setName(String name) {
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("err");
            this.name = "886";
        }
    }
    public String getName() {
        return name;
    }

    // 设置年龄
    public void setAge(int age) {
        if (age >= 1 && age <= 120) {
            this.age = age;
        } else {
            System.out.println("您输入的年龄不对,给你。。。。。");
            this.age = 18;
        }
    }
    public int getAge() {
        return age;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public double getSalary() {
        return salary;
    }

    public String info() {
        return "name = " + name + " age = " + age + " salary = " + salary;
    }

}

继承

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

extends:ex-出 + tend-延展 -> 延伸,在java中代表继承,别忘了加三单哦~

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
输入ctrl + H,可以看到类的继承关系
在这里插入图片描述


Q1:为什么java中所有类都是Object类的子类?
A1:因为Object类中放了子类中常用的对象,所以它是所有类的父类


Q2:为什么java实例化子类的对象时,会先调用父类的构造器呢?
A2:这是因为为了要获得父类的属性和方法,必须要先调用父类的构造器进行初始化。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
over-上+ride-骑 -> 骑在上面(vt.推翻)
在Java中是方法的重写

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值