Java面向对象的三大特征:
封装,继承,多态。
1. 类和对象:
定义类语法:
[修饰符] class 类名
{
零到多个构造器定义
零到多个属性
零到多个方法
}
属性用于定义该类或类的实例所包含的数据,方法则用于定义该类或该类的实例的行为特征或功能实现。
构造器用于构造该类的实例。Java语言通过new关键字来调用构造器,从而返回累的实例。
定义属性语法:
[修饰符] 属性类型 属性名 [=默认值]
:修饰符:可以省略,也可以是public protected,private,static,final其中public protected,private三个最多只能出现其一,可以与static,final组合起来修饰属性
: 属性类型: 属性类型可以是Java语言允许的任何数据类型。
:属性名: 合法标识符即可
: 默认值: 定义属性还可以定义一个可选的默认值。
定义方法语法:
[修饰符] 方法返回值类型 方法名 (形参列表)
{
//由零条到多条可执行语句组成的方法体
}
static : 是一个特殊关键字,它可用于秀时方法,属性等成员,static修饰的成员表明它是属于这个类共有的,而不是属于该类的单个实例,因为通常把static修饰的属性和方法特称为类属性,类方法
不使用static修饰的普通方法,属性则属于的那个实例,而不属于该类,应为通常把不使用static修饰的属性和方法也称为实例属性,实例方法。
定义构造器语法:
[修饰符] 构造器名 (形参列表)
{
//由零条到多条可执行语句组成的构造器执行体
}
修饰符: 可以省略,也可以是public,prorected,private之一。
构造器名: 构造器名必须与类名相同
形参列表: 和定义方法形参列表的格式完全相同
构造器不能定义返回值类型声明,也不能使用void定义构造器没有返回值,如果为构造器定义了返回值类型,或使用void定义构造器没有返回值类型,编译时不会出错,但Java会把这个所谓的构造器当成方法处理。
2. 对象引用和指针:
栈内存里的引用变量并未真正的存储对象里的属性数据,对象的属性数据实际存放在堆内存里,而引用类型变量。
如果希望通过垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null即可。
对象的this引用:
1) 是一个对象的默认引用,this关键字指向调用该方法的对象,根据this出现位置的不同,this作为对象的默认引用的两种形式:
构造器中引用该构造器执行初始化的对象
在方法中引用调用该方法的对象
2) this可以代表任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的,但他的类型是可以确定的,它所代表的对象只能是当前类,只有这个方法被调用时,他所代表的对象才可以被确定下来,谁在调用这个方法,this就代表谁。
3) 大部分时候,普通方法访问其他方法,属性时无需使用this前缀,但如果方法里有个局部变量和属性同名,但程序又需要在该方法里访问这个被覆盖的属性,则必须使用this前缀。
4) this引用也可用于构造器中作为默认引用,由于构造器是直接使用new关键字来调用,而不是使用对象来调用,所以this关键字在构造器进行初始化的对象。
5) 当this作为对象的默认引用使用时,程序可以象访问普通引用变量一样来访问这个this引用,甚至可以把this关键字当成普通方法的返回值。
3. 方法的所属性;
Java语言里的方法的所属性:
方法不能独立定义,方法只能在类体里定义
从逻辑意义上来看,方法要么属于一个类,要么属于一个对象
永远不能独立执行方法,执行方法必须使用类或对象作为调用者。
4. 递归方法:
一个方法体内调用它自身,被称方法的递归。方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。
示例:
public class Recursive
{
public static int fn(int n)
{
if(n==0)
{
return i;
}
else if (n==1)
{
return 4;
}
else
{
//方法中调用它自身,就是方法递归
return 2* fn(n-1)+fn(n-2);
}
}
public static void main(String [] args)
{
//输出fn(10)的结果
System.out.print(fn(10));
}
}
5. 方法重载:
Java允许同一个类里定义多个同名方法,只要形参列表不同即可。如果同一个类中包含了两个或两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载。
三要素:
调用者:也就是方法的所属者,既可以是类,也可以是对象。
方法名: 方法的标识。
形参列表: 当调用方法时,系统将会根据传入的实参列表匹配。
6. 局部变量和成员变量
局部变量根据定义形式不同,分为以下三种:
形参:在定义方法签名时,形参的作用域是在整个方法内有效。
方法局部变量: 在方法体内定义的局部变量,他的作用从方法该变量的地方生效,到该方法结束时实效,
代码块局部变量: 在代码块中定义的局部变量,这个局部变量的作用域是从定义该变量的地方生效,到代码块家属时失效。
在同一个类里,成员变量的作用范围是整个类有效,一个类里不能定义两个同名的成员变量,即使一个是类属性,一个是实例属性也不行,一个方法里不能定义两个同名的局部变量,
即使一个是方法局部变量,一个是代码块局部变量或者形参也不行。
7. 封装:
封装实现目的:
隐藏类的实现细节
让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入逻辑控制,限制对属性的不合理访问
可进行数据检查,从而有利于保证对象信息的完整性。
便于修改,提高代码的可维护性
private default protected public(访问级别从小到大)
8. 使用import语句导入单个类: import package.subpackage...ClassName;
使用import语句导入指定包下全部类: import package.subpackage...*;
使用import static语句导入指定类单个静态属性: import static package.subpackag...ClassName.filedName;
导入指定全部静态属性: import static package.subpackag...ClassName.*;(*只能代表属性名)
9. Java的常用包:
java.lang:包含Java语言的核心类,如String,Math,System,Thread等,无需导入import语句。
java.util:包含Java大量工具类/接口和集合框架类/接口,例如Array,List,Set
java.net: 包含一些Java网络编程相关的类/接口
java.io: 包含Java输入输出编程相关的类/接口
java.text: 包含Java何世华相关的类
java.sql: 包含Java进行JDBC数据库编程相关类/接口
java.awt: 包含抽象窗口工具集,的相关类/接口,主要用于构件图形用户界面程序
java.swing: 包含Swing图形用户界面程序的相关类/接口,用于构建平台无关的GUI程序.
10. 深入构造器:
构造器是一个特殊的方法,用于创建类的实例。Java类必须包含一个或者一个以上的构造器。
最大的用处就是在创建对象时执行初始化。
构造器的重载:
同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。要求构造器名字相同。
11. 继承的特点:
通过extends 实现。
语法:
[修饰符] class SubClass extends SuperClass
{
//类定义部分
}
12. 方法重写:
子类包括与父类同名方法的现象被称为方法重写。也被称为方法覆盖。子类重写父类或者父类覆盖子类。
13. 子类构造器调用父类构造器分为:
子类构造器执行体的第一行使用super显示调用父类构造器,子类构造器总会调用父类的构造的实参列表调用父类对应的构造器。
子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类另一个构造器,执行本类中另一个构造器时即会调用父类的构造器。
子类的构造器执行体中既没有super调用,也没有this调用,系统将会执行子类构造器之前,隐式调用父类无参数的构造器。
14. 多态性: Java引用变量有两个类型:编译时的类型,运行时的类型。
编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定,如果编译时类型和运行时类型不一致,就会出现所谓的多态。
电子书观后感(未完待续)
最新推荐文章于 2024-01-30 21:53:33 发布