【JAVA-SE】面向对象

面向对象

面向对象思想

封装、继承、多态

面向对象思想特点

符合我们思想习惯的思想、复杂事情简单化、执行者变成指挥者
事物----类—封装(属性,功能);
属性—成员变量(属性);
功能—成员方法(功能)

步骤

实例化类(创建对象):Leiming duixiangming=new Leiming();
获取属性:duixiangming.shuxingming;
调用方法:duixinagming.fangfaming;
(成员变量可以不赋初值,有默认值;)

封装

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
原则:将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。

定义类其实就是定义类的成员(成员变量和成员方法)
成员变量:和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
成员方法:和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
类和对象的概念:类:是一组相关的属性和行为的集合
对象:是该类事物的具体体现

构造方法

构造方法:方法名和类名相同,没有返回值类型,也无具体返回值,无需void.
作用:对类进行初始化,
注意事项:系统默认提供空参构造方法
如果自己手动写出有参构造则会自动覆盖系统给出的空参构造
创建对象要借助构造方法完成类的实例化
给成员变量赋值的两种方式:setXxx()方法、构造方法

方法重载

方法重载:允许一个类中可以存在多个同名方法,参数个数或类型不一样
自定义的类中,手动给出有参构造后,默认的空参构造就消失,若需要使用,则需另行写出一个空参构造。(否则会报错)
有参构造创建对象并给成员变量赋值等效于用空参构造创建并调用set()方法

方法重写

方法重写:子类与父类重名方法(方法名、参数列表、返回值类型都一样),调用子类方法。
快捷键:Ctrl+o(同时对子类的重写加标记)
应用: 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
注意事项:只能重写非private;
被重写的方法权限修饰符不能低于(一样或者高于)父类;
静态方法无法重写;(理由见多态)
Final修饰的只继承不重写

代码块

分类:局部代码块、构造代码块、静态代码块、同步代码块(多线程)
局部代码块:方法中;及早释放代码块的内存
构造代码块:类中,平行方法;优先构造方法执行
静态代码块:给构造代码块前加static修饰;由于类只加载一次,所以静态代码块只执行一次;可以进行一些初始化操作

继承

关键字:extends
优点:提高代码的复用性;维护性(双面性);
缺点:类之间增加耦合性(软件设计原则:高内聚,低耦合)
注意事项:只支持单继承,可以多层继承;
只能继承非private;
顶层父类Object,所有的类都可直接或者间接继承
构造方法不可继承
继承中也遵循就近原则
创建子类对象时,父类空参构造先执行(子类继承父类,需先将父类初始化(程序自己会执行)才能使用)
每个类的构造方法中第一行,默认语句super(),调用父类的空参构造(用来初始化父类)
当要调用父类有参构造,用super(canshu),必须位于第一行

多态/向上转型

概述:一种事物不同时间的不同状态
前提:有继承关系;有方法重写;父类引用指向子类对象。
格式:父 f = new 子();
成员访问特点:
成员变量:编译看左边,运行看左边。
构造方法:创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
成员方法:编译看左边,运行看右边。
静态方法:编译看左边,运行看左边。(静态和类相关,算不上重写,所以,访问还是左边的)
好处:提高了代码的维护性(继承保证)
提高了代码的扩展性(由多态保证)
弊端:不能使用子类特有的功能
解决:把父类的引用强制转换为子类的引用。(向下转型)
向下转型:Zi zi=(Zi) fu;(将父类强制向下转型)
zi.fangfa();(调用子类独有的方法)

内部类

定义:将一个类定义到另一个类的内部;成员内部类,局部内部类
访问特点:内部类可以直接访问外部类的成员,包括私有。
外部类要访问内部类的成员,必须创建对象。
按照内部类位置分类:
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。

成员内部类

成员内部类:相当于外部类的成员位置
格式: 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
创建对象:waibuleiming.neibuleiming mingzi=new waibulei().new neibulei();
特点: 内部可以直接访问外部成员包括私有的;
外部访问内部需创建对象;
可以被private修饰,但外界不能直接创建对象(借助本类平行方法调用);
可以被static修饰,wai.nei mingzi=new wai.nei();
修饰符:
private 为了保证数据的安全性
static 为了方便访问数据
注意事项: 静态内部类访问的外部类数据必须用静态修饰。
成员方法可以是静态的也可以是非静态的
被静态修饰后的访问:
格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();

局部内部类

局部内部类:处于外部类的方法中
特点: 外界无法创建,方法中创建在调用方法;
可以在本方法内创建对象;
可以直接访问外部,包括私有;
局部内部类访问外部类的局部变量,变量要加final变成常量(因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。)
可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

匿名内部类

匿名内部类:局部内部类的简写;
前提:存在一个类或者接口;这里的类可以是具体类也可以是抽象类。
本质:是一个对象,是实现了该接口或继承了该抽象类的子类对象;
作用:作为参数传递(new的一整块)
格式:new 类名或者接口名(){重写方法;} ;

匿名对象

匿名对象: new duixiang();每一个新对象都是一个新的空间。(默认调用空参构造)
作为实参传递;一次性对象。
不加new的对象为原先创建的对象
应用场景:调用方法,仅仅只调用一次的时候。
匿名对象可以作为实际参数传递
(看到一个方法的形参,要一个类类型,那么传该类的对象)
快捷键设置set:alt+insert 选择set get 选择

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值