CBG 2108班day10学习内容总结

Day10

1 标准类的制作

1.1 成员变量-属性

使用private进行封装,封装后提供对应的getXxx()与setXxx()方法

1.2 构造方法

1.提供一个本类的无参构造
2.提供一个全参构造:创建对象+给对象的属性赋值

1.3 成员方法-普通方法

1.根据本类的业务提供一些方法
2.提供一个方法,用于展现本类的类名以及本类所有属性和属性值

1.4 创建对象进行测试

1.使用无参构造创建对象,然后调用setXxx()给所有属性赋值
2.使用全参构造创建对象,对象的属性同时也有值

1.5 巩固练习

需求:创建学生类,按照上述步骤进行测试
学生的属性:学号 姓名 性别 住址 科目
学生的功能:学习 吃饭 睡觉

1.创建学生类Student

package day10;

public class Student {
    //1.1 定义学生的属性并封装
    private int id;//学号
    private String name;//姓名
    private char gender;//性别
    private String address;//住址
    private String subject;//科目

    //2.1 提供本类的无参构造
    public Student() {
        System.out.println("我是Student的无参构造");
    }
    //2.2 提供本类的全参构造
    public Student(int id, String name, char gender, String address, String subject) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.address = address;
        this.subject = subject;
        System.out.println("我是Student的全参构造");
    }
    //3.1 提供本类的普通方法1(无返回值无参)
    public void study(){
        System.out.println("学习使我快乐");
    }
    //3.2 提供本类的普通方法2(无返回值含参)
    public void eat(int n){
        System.out.println("今天我要吃"+n+"碗大米饭");
    }
    //3.3 提供本类的普通方法3(有返回值无参)
    public String sleep(){
        return "今天又睡了美美";
    }
    //4 提供本类的一个展示类型与所有属性和属性值的方法
    public void show(){
        System.out.println("Student:[id="+id
                +",name="+name
                +",gender="+gender
                +",address="+address
                +",subject="+subject+"]");
    }

    //1.2提供对应属性的getXxx()与setXxx()方法
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }
}

2.创建学生类的测试类TestStudent

package day10;

public class TestStudent {
    public static void main(String[] args) {
        //1.1 使用无参构造创建对象
        Student s = new Student();
        //1.2 通过setXxx()给对象的所有属性赋值
        s.setId(43);
        s.setName("静静");
        s.setGender('女');
        s.setAddress("广州");
        s.setSubject("高数");
        //1.3 通过对象调用方法进行测试
        s.study();
        s.eat(5);
        System.out.println(s.sleep());
        s.show();

        //2.1 使用全参构造创建对象
        Student s2 = new Student(45,"海绵宝宝",'女',"海底两万里","CGB");
        s2.study();
        s2.eat(10);
        System.out.println(s2.sleep());
        s2.show();
    }
}

测试结果如下:
在这里插入图片描述

2 接口 interface

1.我们通过interface关键字定义接口
2.接口实现类需要通过关键字implements与接口建立实现关系
3.接口不可实例化,即:接口不可创建对象
4.在java8中,接口中所有的方法都是抽象方法,方法可以简写,会自动拼接public abstract
5.接口中没有构造方法,接口实现类调用的构造方法是父类的,而不是父接口的
注意:如果一个类没有明确指定父类,会默认继承顶级父类 Object
6.接口中没有成员变量,都是静态常量,默认会拼接public static final
7.接口不是类!!!
但可以把接口理解为一个特殊的抽象类
特殊性:所有的方法都是抽象方法的抽象类
8.如果一个实现类实现了接口,要么变成一个抽象子类(不实现/实现部分方法),要么变成一个普通子类(实现全部方法)
9.接口是用来制定规则的==[有哪些方法?方法有参数吗?方法有返回值类型吗?]并不做具体的实现
10.接口可以多继承
[一个接口可以继承多个接口]==
多实现==[一个类可以实现多个接口]==

3 类与类之间的关系

继承关系,且只支持单继承
比如;class A extends class B,其中A是子类,B是父类,子类具备父类的所有功能,子类还可以有自己特有的功能
1.子类不能使用父类的私有资源,原因是父类的私有资源子类不可见
2.继承相当于子类把父类的功能复制了一份,但构造方法不可继承
3.子类如果想要在不改变父类功能的前提下,实现功能的修改与拓展,可以对方法进行重写
重写遵循的原则:两同(方法名,参数类型)
两小(返回值类型,抛出的异常类型)
一大(修饰符)

4 接口与接口之间的关系

继承关系,既可以单继承,也可以多继承
单继承:interface A extends Inter 1{}
多继承:interface B extends Inter 1,Inter2{}
A是Inter1的子接口
B是Inter1,Inter2共同的子接口
注意:如果C是B的普通实现类
那么C就要实现B接口,以及B接口从Inter1,Inter2接口中继承下来的所有抽象方法

5 接口与接口之间的关系

实现关系,可以单实现,也可以多实现
单实现:class A implement Inter1{}
多实现:class B implement Inter1,Inter2{}
A是Inter1的子实现类
B是Inter1,Inter2共同的子实现类
注意:此时B需要实现Inter1与Inter2接口中所有的抽象方法,否则B就是一个抽象子类
注意:如果有任何一个抽象方法没有实现,那么这个类一定是抽象子类
我们一般创建的都是接口实现类的对象,不用创建多态对象那么麻烦

6 抽象类与接口之间的关系

1.抽象类是一个特殊的类,这个类被abstract修饰,并且可以存在抽象方法
接口可以看做是一个特殊的抽象类,接口内的所有方法都是抽象方法
但接口不是类! 接口使用interface来定义
2.抽象类中有构造方法,但接口中没有构造方法
注意:抽象类的子类调用的就是抽象类的构造方法,但接口的实现类调用的是自己父类的构造方法
3.抽象类与接口均不可直接创建对象
4.接口可以多继承,抽象类只能单继承
5.抽象类中可以定义普通的成员变量,但是接口中都是静态常量
6.抽象类是后天重构的结果,接口是先天设计的结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值