学习笔记-基础知识4-面向对象(1)

1.面向对象
面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法。
面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型。
面向对象:将功能封装到对象里,强调的是具备某功能的对象;
面向对象的三个特征:
封装(Encapsulation);
继承(Inheritance);
多态(Polymorphism)。
面向过程:强调的是具体的功能实现;(执行者)
面向对象:强调的是具备功能的对象。(管理者)

2.类
类(class)是Java 语言的最小编程单位。
类的概念:
类是一组事物共有特征和功能的描述。
类是抽象的,对象是具体的,实实在在的!
类的定义:
[修饰符] class 类名{}
定义类,其实就是定义类里面的对象,通过类来描述对象;
状态(属性)——–成员变量;
功能、行为——方法;

3.构造方法
构造方法:用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用)
属性:类或对象所包含的数据,对类状态的一种描述;
方法:类或对象的特征或行为
作用:给类中的字段进行初始化,可以用来创建对象。
特点:
方法名与类名相同
不用定义返回值类型
不需要写return语句
注意:多个构造方法是以重载的形式存在的。
对象的产生格式:类名称 对象名= new 类名称();

4.static关键字
特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意:
静态方法只能访问静态成员,但是非静态成员可以访问静态成员;
静态方法中不可以使用this,super关键字
主函数(main)是静态的
static修饰的字段和方法,既可以通过类调用,也可以使用实例调用;
没static修饰的字段和方法,只能使用实例来调用

5.匿名对象
一个没有名字的对象, 创建了一个对象出来,没有赋给一个变量;
特点:
对方法或字段只进行一次调用时;
可作为实际参数进行传递;
只在堆里面开辟存储区域,
只能使用一次, 使用完就被销毁了;
new Person();表示匿名对象,没有名字的对象

6.this关键字
特点:this表示当前对象,当前正在调用实例成员的对象,谁调用了方法,谁就是当前对象。
什么时候使用this关键字呢?
方法间的相互调用:this.字段。
构造块中相互调用:this([参数])必须写在构造方法第一行。
this不能用在static修饰的方法里和static修饰的代码块里。

7.封装
把描述对象的状态用属性表示,描述对象的行为用方法表示,
把属性和方法定义在一个类中,并将属性都隐藏,只对外提供公共访问。

8.访问修饰符
private:类访问权限:本类内部可以访问,不能继承到子类;
default:什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;
protected:子类访问权限:本类内部,不同包的子类,同包其他类都可访问,能继承到子类;
public:公共访问权限:任何地方都可以访问,能继承到子类;

9.继承
特点:
提高了代码的复用性。
让类与类之间产生关系,有了这个继承关系才有了多态的特性。
Java语言中只支持单继承
Java支持多层继承,object是每个类的超类。
继承是多态的前提。
格式:
[修饰符] class SubClass extends SuperClass
SuperClass类称为父类或基类,把SubClass称为子类或派生类或拓展类;
子类与父类的关系:
子类拓展父类(子类是父类的一种特殊情况)
主要是以父类为基础,然后添加属于自己的字段和方法。
父类的私有成员子类不能继承到;
父类的构造方法不能被继承;
Java只支持单继承,不支持多继承;
一个类有且只有一个直接父类;
一个类没显示的继承其他的一个类的时候,默认的直接父类就是Object类;
一旦一个类显示的继承了其他的一个类的时候,此时默认的直接父类Object就会被取消;
子类对象实例化过程:
a.子类的构造函数默认都会访问父类中空参数的构造函数,
因为子类每一个构造函数的第一行都有一句隐式的super();
b.当父类没有空参数的构造函数时,子类必须通过手动super语句形式来指定
要访问的父类中的构造函数,也可手动指定this语句来访问本类中的构造函数。
所以,子类至少有一个构造函数会访问到父类的构造函数。

10.子类访问父类和方法覆写
子类不能直接访问父类的私有成员;
但是子类可以调用父类中的非私有方法来间接访问父类的私有成员。
方法覆写产生原因:
当父类中某个方法不适合于子类时,子类出现父类一模一样的方法.
判断:子类方法前加上@Override 能编译通过,表明是方法的覆写。
调用被覆盖的父类方法:使用super.方法名(实参);
方法覆写时应遵循的原则:
方法签名必须相同;
子类方法的返回值类型比父类方法的返回值类型更小或相等
子类方法声明抛出的异常应比父类方法申明抛出的异常更小或相等;
子类方法的访问权限应比父类方法更大或相等;
子类需要覆写父类方法。

11.super关键字和调用父类构造方法
super表示父类对象的默认引用
调用构造方法:
本类中调用另一个重载构造方法用this(参数列表)
子类构造方法调用父类构造方法用super(参数列表)
子类调用父类的构造方法时:
super必须放在第一句
会先调用父类无参的构造方法,其目的是为了对继承自父类的成员做初始化操作。

12.多态
多态:指同一个实体同时具有多种形式
编译时的类型由声明该变量时使用的类型决定
运行时的类型由实际赋给变量的对象决定
如果编译时类型和运行时类型不同,就出现多态。
前提:Student extends Person:
Person p = new Student();//多态
引用关系:父类变量指向子类实例对象
实现多态的机制:
父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,
就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,
而不是引用变量的类型中定义的方法。
多态的作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,
写出通用的代码,做出通用的编程,以适应需求的不断变化。
只修改方法的实现,不必修改方法的声明
继承是多态产生的前提条件;
分类:
编译时多态:方法重载
运行时多态:方法覆写

13.引用变量类型转换
向上转型(子类→父类):(自动完成)父类名称 父类对象= 子类实例;
向下转型(父类→子类):(强制完成)子类名称 子类对象= (子类名称)父类实例;
对象名 instanceof 类:判断指定的变量名此时引用的真正类型是不是当前给出的类或子类;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值