- return的两种用法:
-
应用在具有返回值类型的函数中:
-
return value://表示结束当前函数,并伴有返回值,返回到函数调用出处。 -
应用在没有返回值类型(void)的函数中:
-
return://表示结束当前函数,直接返回到调用函数处。
- 函数使用
- 注意:一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套。
- 经验:一个函数只能做一件事情。(单一职能原则)
- 好处:
-
减少代码冗余 -
提高复用性 -
提高可读性 -
提高可维护性 -
方便分工合作
什么是对象
面向对象思想(Object Oriented Programming):
一切客观存在的事物都是对象,万物皆对象。
任何对象,一定具有自己的特征和行为。
对象:
1.特征:成为属性,一搬为名词,代表对象有什么。
2.行为:成为方法,一班为动词,代表对象能做什么。
程序中的对象
如何使用程序模拟现实世界,解决现实问题?
首先,在程序中,必须具有和现实中相同的对象,用模拟现实世界。
然后,使用程序中的对象代表现实中的对象,并执行操作,进而解决现实问题。
现实中的对象多数来自于“模版”,程序中的对象也应该具有“模版”。
什么是类
对象是“模版”,类是实例。
类的抽取
在一组相同或类似的对象中,抽取出共性的特征和行为,保留所关注的部分。
例如犬类,其具有的特征(属性)有:品种、年龄、性别、毛色…
方法(行为)有:吃、喝、拉、撒、睡等行为。
类的定义
属性:通过变量表示,又称实例变量。
语法:数据类型 属性名;
位置:类的内部,方法的外部。
方法:通过函数表示,又称实例方法。
语法:
public 返回值类型 方法名(形参){
//方法的主体
}
实例变量与局部变量的区别
| 局部变量 | 实例变量 | |
|---|---|---|
| 定义位置 | 方法或方法内的结构当中 | 类的内部,方法的外部 |
| 默认值 | 无默认值 | 字面值(与数组相同) |
| 使用范围 | 从定义行到包含其结构结束 | 本类有效 |
| 命名冲突 | 不允许重名 | 可与局部变量重名,局部变量优先 |
方法重载的概念
有些情况下,对象的同一种行为可能存在多种实现过程。
重载(Overload):一个类中定义多个相同名称的放法。
要求:
方法名称相同。
参数列表不同(类型、个数、顺序)
与访问修饰符、返回值类型无关。
调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法。
好处:屏蔽使用差异,灵活方便。
注意:知识参数名称不同,并不能构成方法的重载。
构造方法
构造方法:类中的特殊方法,主要用于创建对象。
特点:
名称与类名完全相同。
没有返回值类型。
创建对象时,触发构造方法的调用,不可通过句点手动调用。
注意:如果没有在类中显示定义构造方法,则编译器默认提供无参数构造方法。
构造方法重载
构造方法也可重载,遵循重载规则。
public class test{
public static void main(String[] args){
new Teacher();
new Teacher(20);
}
}
class Teacher{
String name;
int age;
String sex;
double salary;
//无参构造方法
public Teacher(){
System.out.println("--无参构造--");
}
//单参构造
public Teacher(int a){
System.out.println("--单参构造--");
}
}
封装的概念
概念:尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。
访问修饰符:private(可将属性修饰为私有,进本类可见)
get/set方法是外界访问对象私有属性的唯一通道,方法内部可对数据进行检测和过滤。
多态的概念
父类引用指向子类对象,从而产生多种形态。
Animal a = new Dog(); // 把dog对象当成animal 来看
Animal a :父类引用(引用类型) new Dog():子类对象(对象类型)
二者具有直接或间接的继承关系时,父类引用可指向子类对象,即形成多态。
父类引用仅可调用父类所声明的属性和方法,不可调用子类独有的属性和方法。
应用场景:一、使用父类作为形参实现多态,使方法参数的类型更为宽泛。
调用方法时,可传递的实参类型包括:本类型对象+其所有的子类对象
二、使用父类作为方法返回值实现多态,使方法可以返回不同子类对象。
调用方法后,可得到的结果类型包括:本类型对象+其所有的子类对象。
abstract抽象类
abstract修饰类:不能new对象,但可以声明引用。
abstract修饰方法:只有方法声明,没有方法实现。(需包含在抽象类中)
抽象类中不一定有抽象方法,但抽象方法的类一定是抽象类。
子类继承抽象类后,必须覆盖父类所有的抽象方法,否则子类还是抽象类。
static静态
1.静态(static)可以修饰属性和方法。
2.成为静态属性(类属性)、静态方法(类方法)
3.静态成员是全类所有对象共享的成员。
4.在全类中只有一份,不因创建多个对象而产生多份。
5.不必创建对象,可直接通过类名访问。
6.静态方法允许直接访问静态成员。
7.静态方法不能直接访问非静态成员。
8.静态方法中不允许使用this或是super关键字。
9.静态方法可以继承,不能重写、没有多态。
10.静态代码块在类的加载时被执行,且只执行一次。
final类
final修饰类:此类不能被继承。
String、Math、System均为final修饰的类,不能被继承。
final修饰方法:此方法不能被覆盖。
final修饰变量:此变量值不能被改变(常量)
接口的概念
接口与抽象类的异同
相同:
可编译为字节码文件。
不能创建对象。
可以作为引用类型。
具备object类中所定义的方法。
不同:
所有属性都是公开静态常量,隐式使用 public static finale 修饰。
所有方法都是公开抽象方法、隐式使用 public abstract 修饰。
没有构造方法、动态代码块、静态代码块。
java为单继承,当父类的方法种类无法满足子类的需求时,可实现接口扩充子类的能力。
任何类在实现借口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
实现接口中的抽象方法时,访问修饰符必须是 public.
内部类
概念:在一个类的内部在定义一个完整的类。
特点:1、编译之后可生成独立的字节码文件。
2、内部类可直接访问外部类的私有成员,而不破坏封装。
3、可为外部类提供必要的内部功能组件。
成员内部类
在类的内部定义,与实例变量、实例方法同级别的类。
外部类的一个实例部分,创建内部类对象是时,必须依赖外部类对象。
Outer out = new Outer();
Inner in = out.new Inner();
当外部类、内部类存在重名属性时,会优先访问内部类属性。
成员内部类不能定义静态成员。
静态内部类
1、不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员。
2、只能直接访问外部类的静态成员(实例成员需实例化外部类对象)。
局部内部类
定义在外部类的方法中,作用范围和创建对象范围仅限于当前方法。
局部内部类访问外部类当前方法中的局部变量时,因无法保障变量的声明周期与自身相同,变量必须修饰final。
限制类的使用范围。
匿名内部类
没有类名的局部内部类(一切特征都与内部类相同)。
必须继承一个父类或者实现一个接口。
定义类、实现类、创建对象的语法合并,智能创建一该类的对象。
Object类
1、超类、基类,所有类的直接或者间接父类,位于继承树的最顶层。
2、任何类,如果没有书写extends显示继承某个类,都默认直接继承object类,否则为间接继承。
3、object类中所定义的方法,是所有对象都具备的方法。
4、object类型的可以存储任何对象:作为参数,可接受任何对象;作为返回值,可返回任何对象。
16万+

被折叠的 条评论
为什么被折叠?



