Java学习之随堂笔记系列——day10

1、回顾面向对象
    1 面向过程:强调的是过程,每一步都需要自己实现,凡事都要亲历亲为。
    2 面向对象:强调的是哪个对象能有这个功能就找哪个对象去实现。
    3 类和对象的区别
        例子:手机图纸(手机类)和手机(手机对象)的关系。
        类:是一类事物属性和行为的描述。
        对象:这一类事物的具体实现就是对象,也就是根据类创建出来的就是对象。
    4 标准的Java类
        1、private修饰的成员变量
        2、空参构造和有参构造
        3、get和set方法
    5、private关键字
        1、private关键字修饰的成员变量外界无法直接方法,这样就不能赋不合法的值。
        2、提供一个get和set方法让外界访问成员变量。
    6、this关键字
        1、this.变量名表示的是成员变量,可以用于区分同名的成员变量和局部变量
        2、this表示当前调用该方法的对象。
    7、构造方法
        1、构造方法是用来创建对象的。
        2、创建对象的时候对成员变量进行初始化。
      注意实现:
        如果没有写构造方法,系统会自动赠送一个空参构造,如果自己写了构造方法,系统将不在赠送空参构造,建议将空参构造手动写上。
    8、面向对象的三大特征:
        封装、继承、多态。
2、面向对象-继承
    概念:一种子父类关系,子类可以拥有父类的成员变量和成员方法。
    继承格式:
        public class 子类 extends 父类{

        }
    继承可以解决什么问题?
        如果多个类都有相同的成员变量和成员方法,那么就可以给这些类提取一个父类,让这类去继承父类。

    注意事项:
        1、一个类可以有多个子类,但是只能有一个父类。
        2、Java不支持多继承,但是支持多层继承。也就是只支持单继承。

3、继承中成员变量、成员方法、构造方法的访问特点
    成员变量的访问特点:
        就近原则:方法内有同名局部变量就是访问局部变量,如果没有同名局部变量就方法当前类的成员变量,
                如果当前类没有同名的成员变量,就访问父类的成员变量。如果父类也没有,就编译报错。
        例如:
            //如果要打印当前子类的age=20,该如何输出
            System.out.println(this.age);
            //如果要打印父类的age=40,该如何输出
            System.out.println(super.age);

        this和super的区别?
            this表达当前类对象,如果当前类是子类,那么this就表示子类对象。
            super:当前类的父类对象。

    构造方法的访问特点:(了解)
        1、创建子类对象的同时默认会执行父类的空参构造,创建父类对象,目的:初始化父类中的成员变量,因为子类可能会使用到
            父类的成员变量。
        2、如果在子类的构造方法中访问父类的有参构造,那么需要在构造方法的第一行使用super关键字。例如:
            public Zi(int age){
                //需求;访问父类的有参构造?
                super(age);//将new zi(20)中的20传递个父类的构造方法。
                System.out.println("zi类的带参构造");
            }
        注意事项:
            super(...)可以不写,默认就是访问父类的空参构造,如果写了,就必须是构造方法中的第一行代码

    成员方法的访问特点:
            子类对象在调用方法时,如果子类中有这个方法,那么就是调用子类的方法,如果子类中没有这个方法,那么就调用父类的该方法。如果父类中也
        没有该方法,那么就编译编译报错。当然在子类的方法中可以使用super.方法名()访问父类的成员方法。
        例如:
            public void show(){
                super.show();
                System.out.println("子类中的show方法执行了...");
            }
    总结:this表达当前类的对象,super表示当前类的父类对象,super点任意东西都指的是父类中的内容。

4、方法的重写
    方法重载:在同一个类中,方法名相同,参数列表(参数个数不同,相同位置的参数类型不同)不同就是方法重载。方法重载和返回值、变量名无关。
    方法重写:在子父类关系中,子类定义了一个和父类一样(方法名和参数吧列表一样)的方法就是方法的重写。
        小提示:
            1、子类如果要重写父类的方法,不需要复制粘贴,只需要在子类中写要重写的方法名就会有提示。
            2、@Override注解主要是在编译期检查方法是不是重写,如果是重写的方法就不会编译报错,反之就报错。
    方法重写的目的:扩展功能
        如果父类中方法的功能不能满足需求,那么子类就可以重写该方法,自己重写写方法体来实现需求,子类重写了该方法,那么调用的时候就是调用子类的方法。

    方法重写的注意实现:
        在开发中一般重写的方法权限修饰符和父类的一样即可。(一定不能比父类的小)

    案例1:老师类和学生类
        需求:
            1、定义老师类(姓名、年龄成员变量,教书的方法)
            2、定义学生类(姓名、年龄成员变量、学习的方法)
        分析:
            1、定义一个老师类和学生类的父类Person
            2、在Person类中定义name和age,提供get/set方法
            3、定义老师类和学生类继承Person类,声明各自特有的teach和study方法。
            4、定义测试类进行测试
        测试类:PersonDemo
            1、创建Teacher对象,调用set方法赋值
            2、调用get方法打印老师的名字和年龄,调用teach方法
            3、创建Student对象,调用set方法赋值
            4、调用get方法打印学生的名字和年龄,调用study方法

    案例2:
        需求:
            1、定义猫类(姓名、年龄成员变量,抓老鼠的方法)
            2、定义狗类(姓名、年龄成员变量、看门的方法)
        分析:
            1、定义一个猫类和狗类的父类Animal
            2、在Animal类中定义name和age,提供get/set方法
            3、定义猫类和狗类继承Animal,声明各自特有的catchMouse和lookDoor方法。
            4、定义测试类进行测试
        测试类:AnimalDemo
            1、创建Cat对象
            2、调用get方法打印猫的名字和年龄,调用catchMouse方法
            3、创建Dog对象
            4、调用get方法打印狗的名字和年龄,调用lookDoor方法

5、package、import、final、static关键字
    package:包,包的本质是文件夹,多级包使用点隔开。package表示当前类所在的包。package com.itheima_5;
    import:导包,引入其他类所在的包。
        package和import的区别?
            package用于表示当前类所在的包,import表示导入其他类所在的包。
    Java权限修饰符:
        public > protected > 默认 > private
        1、掌握public和private:public修饰的成员变量和成员方法任何包中的任何类都能访问,private修饰的成员变量和成员方法只能自己类访问。
        2、同一个包中的类相互访问,最少可以访问三种修饰符修饰的成员变量和成员方法。
        3、不同包中的类相互方法,最多可以访问两种修饰符修饰的成员变量和方法。

    final:最终的。
        final修饰类:表示这个类是最终类,不能被继承。
        final修饰变量(成员变量和局部变量):被final修饰变量是常量,基本数据类型值或者引用数据类型地址值不能发生改变。
        final修饰成员方法:表示这个方法是最终方法,不能被子类重写。

        注意:final不能修饰构造方法;

    static:静态的
        1、static修饰的成员变量不属于类的某个对象,被类的所有对象共享。
        2、static修饰的内容可以直接使用类名点调用,例如:类名.成员变量名,类名.方法名()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值