本文共 2786 字,大约阅读时间需要 9 分钟。
封装、继承、多态
符合我们思想习惯的思想、复杂事情简单化、执行者变成指挥者
事物----类—封装(属性,功能); 属性—成员变量(属性); 功能—成员方法(功能)实例化类(创建对象):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 选择转载地址:http://ylfli.baihongyu.com/