面向对象-笔记

面向对象(OOP )

JAVA是一门面向对象的语言,对象贯穿始终,想干活,先创建对象
面向过程:强调的是过程,干活的是自己,亲力亲为
面向对象:强调是结果,由执行者变为指挥者

****编辑思路
1.抽象相关信息,封装成一个类,类相当于设计图纸
1)特征–属性–用成员变量来描述
2)行为–方法–用方法来描述
2.创建对象,通过new关键字来创建对象 phone p=new phone();
TIPS:p是一个引用类型变量,它保存着的是对象的地址值
3.通过创建好的对象来调用功能,查看属性
创建对象的流程图-----
TIPS:同一个类创建出来的多个对象间没有互相关系,并不互相影响

面向对象的三大特征

1.封装: 把相关的数据封装成一个“类”组件【重用性】
1)把一些属性和行为进行抽象,封装成一个“类”组件,比如phone类
2)隐藏具体的实现细节,提高程序的安全性

1-》使用private修饰类中的成员变量,被private修饰的资源只能在本类中使用
2-》对外提供公共的getXxx()【获取值】与setXxx()【设置值】
3-》我们可以通过封装组织外界直接访问资源,想要访问,必须按照我的方式来封装方法

1》使用private修饰类中的方法,被private修饰的资源外部无法直接访问
2》可以在本类的公共方法中调用次私有方法的功能

1)属性类的封装,用private进行修饰,提供公共的属性设置和访问值方法
我们需要提供对应
getXxx()–获取属性值
setXxx()–设置属性值
2)方法的封装,用priavete进行修饰,可以在本类公共的方法中调用私有方法
如果想执行此私有方法的功能,调用公共方法即可

2.继承: 是子类自动共享父类属性和方法,这是类之间的一种关系
1.继承的关键字是extends建立子类【派生类】与父类【超类】的继承关系,格式:子类 extends 父类
2.子类继承父类,相当于子类把父类的功能复制了一份
3.父类的私有资源子类不可用,是因为被private修饰不可见,但是构造方法不可以被继承。
4.java只支持单继承,一个子类只能有一个父类,但一个父类可以有多个子类
5.继承具有传递性,爷爷的功能传给爸爸,爸爸的功能传给孙子
6.子类可以拥有自己特有的功能,实现功能的拓展
7.继承是is a的关系,依耐性非常强,强耦合

继承之构造方法
1.子类创建对象时,默认会先调用父类的构造方法
2.在子类中第一行默认存在Super(),表示调用父亲的无参构造
3.当父类中没有无参构造时需要通过super(带参数),调用其他的构造方法
4.构造方法不可以被继承

继承之组合

package oop面向对象;
/**
 * 组合类似继承
 * 就是在子类里面new父类
 */
public class demo {
    public static void main(String[] args) {
        Taidi t = new Taidi();
        t.dao.name="啸天";
        t.dao.height=18;
        t.dao.show();
        t.dao.height = 101;
        System.out.println(t);//默认使用了tostring
    }
    static class Dao{
        String name;
        int height;
        public void show(){
            System.out.println("汪汪汪");
        }
    }
    static class Taidi{
        Dao dao = new Dao();
        public String toString(){
            return "名字是:"+ dao.name+" 身高:"+ dao.height;
        }
    }
}

继承之变量
1.如果成员变量没有重名,子类可以直接使用
2.如果子类与父类的成员变量同名时,可以使用super.变量进行指定
super
1.super是一个关键字
2.代表的是父类的一个引用,你可以把它看成是Father s=new Father

继承之方法
重写:
继承后,子类对父类功能不满意,就可以重写
重写的规则:两同 两小 一大
方法名相同,参数列表相同
子类的返回值类型<=父类的返回值类型
子类方法抛出的异常类型<=父亲抛出的异常类型【还没学到,现在不用看】
子类方法的修饰符>=父类方法的修饰符
tips:子类无权重写父类的私有方法
注意:父类的私有方法不可用被重写,因为私有资源看不见,无权修改

3.多态: 增强软件的灵活性和重用性
1.多态的前提是1:是继承
2.多态的前提2:要有方法的重写
3.父类引用指向子类对象,如:Animal a= new cat();
4.多态中,编译看左边,运行看右边
口诀1:父类引用指向子类对象
口诀2:编译看左边,运行看右边 解释:方法的声明看父类,方法的实现看子类
解释:如果想要使用多态的效果,方法的声明看的是父亲,而具体实现的使用的是子类
我们目前学习的对象都是把自己当做是一个父亲类型,所以::
1)多态对象不可用使用子类的特有功能
2)多态对象使用的成员变量是父类的
3)多态对象使用时,如果父子类中出现同名的静态方法,使用的是父类的
4)多态对象在使用方法时,如果子类重写了,使用的是子类的方法体
TIPS:静态资源属于 优先加载的类资源,静态方法不存在重写的现象
谁的对象来调用,那就使用哪个类的静态方法
多态对象调用的静态方法是父类的,因为多态对象被看作是父亲类型

构造方法

1.格式:
普通方法的格式:修饰符,返回值类型,方法名(参数列表){方法体}
构造方法的格式:与类同名且没有返回值类型的方法
2.构造方法是一个用来创建对象的方法
3.只要创建对象就会触发指定的构造方法,创建几个,触发几次
4.构造方法也存在重载现象
1)无参构造–没有参数的构造方法
2)含参构造–含有参数的构造方法
3)全参构造–构造方法的参数类型与类中属性完全一致的构造方法,参数列表里的顺序不做要求
全参构造除了可以创建对象以外,还可以给对象的属性赋值
5.默认存在无参构造
6.一旦添加了含参构造,默认的无参构造会被覆盖,所以要手动添加无参构造
7.构造方法执行的时机:创建对象时立即触发
8.全参构造除了可以帮我们创建对象外,还可以给对象的所有属性赋值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值