第5章 面向对象(上)

3种类型(类、接口、枚举)
4个修饰符(private|protected|public、final|abstract、static)
5个成员(成员变量、方法、构造器、初始化块、内部类)

5.1类和对象

5.1.1定义类

[修饰符] class 类名 [extends 父类]        
    {
	//5大成员                    
    }

修饰符:
public 、final|abstract

★定义成员变量

[修饰符] 类型 变量名 [=初始值];

修饰符:
private|protected|public、final、static

★定义方法

[修饰符] 返回值 方法名 (形参列表)       
    {
	语句
    }

修饰符:
private|protected|public、final|abstract、static

方法体里多条可执行语句之间有严格的执行顺序,排在方法体前面的语句先执行,后面的后执行。

★定义构造器

[修饰符] 构造其名(形参列表)
{           
语句           
    }

修饰符:
private|protected|public

构造器是一个特殊的方法,定义时比方法少一个返回值类型。
如果没有显示定义构造器,系统将提供一个默认的无参构造器。

★定义初始化块

[修饰符] 
{           
语句           
    }

修饰符:
static

★类的作用

  • 定义变量
  • 创建对象
  • 调用类方法或访问类变量
  • 派生子类

5.1.2对象的产生和使用

通过构造器创建对象,通过new关键字调用构造器。

★对象的作用

-访问对象的实例变量。
-调用对象的实例方法。
类或实例访问方法或成员变量的语法:类.类变量|方法,或者实例.实例变量|方法。

5.1.3 对象、引用和指针

5.1.4 对象的this引用

根据this出现的位置不同,this作为对象的默认引用有两种情形。
this引用:this.实例变量|实例方法
this调用:在构造器中,一个构造器调用另一个构造器。this()

类中的一个成员直接调用另一个成员,可以省略this前缀。
static方法可以用类调用,用类调用时this无法指向合适的对象,因此static方法不能使用this引用→static方法不能访问非static成员→静态成员不可以访问非静态成员

5.2方法详解

5.2.1方法的所属性

  • 方法不能独立定义,方法只能在类体里定义。
  • 从逻辑意义上看,方法要么属于该类本身,要么属于该类的一个对象。
  • 永远不能独立执行方法,执行方法必须使用类或对象作为调用者。

static方法用类调用,无static方法用对象调用

5.2.2方法的参数传递机制

方法的参数传递方式只有一种:值传递,就是将实际参数值的副本传入方法内,二参数本身不会受到任何影响。

5.2.3 形参个数可变的方法

如果在定义方法时,在最后一个形参类型后增加三个点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。例如:(String… books) = (String[] books),二者相同,但是后一个只能传数组,前一个都可以。

个数可变的形参只能处于形参列表的最后。也就是说,一个方法最多只能有一个个数可变的形参。

5.2.4 递归方法

一个方法体内调用自身,叫做递归方法。

5.2.5 方法重载

在同一个类,方法名相同,形参列表不同,叫做方法重载。
和返回值类型、修饰符等没有关系。

5.3 成员变量和局部变量

变量
成员变量实例变量(没有static修饰)类变量(有static修饰)
局部变量形参 (方法签名中定义的变量)方法局部变量(在方法内定义)代码块局部变量(在代码块内定义)

判断变量:先看位置,再看static。
成员变量用类调用,实例变量用实例变量调用。虽然实例变量可以调用类变量,但是最好不要这么做。

5.4 隐藏和封装

5.4.1 理解封装

5.4.2 访问控制符

privatedefaultprotectedpublic
同一个类中
同一个包中
子类中
全局范围内

5.4.3 pachage、import、import static

星号只能代表类,如import 包名.*
静态导入使用import static,静态导入*号可以代表导入类的所有静态成员。

5.4.4 Java的常用包

  • java.lang:java语言的核心类,如String、Math、System、Tread等,无需导入,系统会自动导入这个包下的所有类。
  • java.util:Java的大量工具类/接口和集合框架类/接口,如Arrays和List,Set等。
  • java.net:网络编程相关的类/接口。 java.io:Java输入/输出相关的类/接口。
  • java.text:Java格式化相关的类。 java.sql:Java进行JDBC数据库编程的相关类/接口。

5.5 构造器

作用:初始化对象

5.5.1 使用构造器执行初始化

如果程序没有提供构造器,系统会自动创建一个无参构造器。

想让系统创建对象是就为该对象啊的实例变量显式指定初始值,就可以通过构造器来实现。

5.5.2 构造器重载

同一个类里具有多个构造器,他们形参列表不同,就被称为构造器重载。通过向形参列表传入相对应的参数,来选择相应的构造器。
如果系统包含多个构造器,其中一个构造器的执行体里完全包含另一个构造器的执行体,可以使用this调用另一个构造器。

this调用只能放在构造器的第一行。

5.6 类的继承

5.6.1 继承的特点

Java是单继承

继承的语法:

[修饰符] class 子类名 extends 父类名
{
//类定义部分
}

5.6.2 重写父类方法

子类包含于父类同名方法的现象叫做方法重写(override),方法重写遵循“两同两小一大”规则:
“两同”:方法名相同。
“两小”:返回值类型,子类方法声明的异常应比父类小或相等。
“一大”:子类的访问权限更大或相等。

5.6.3 super限定

super限定:super.父类实例变量|实例方法
super调用:super(父类构造器对应参数),子类构造器一定要调用父类构造器一次:创建任何对象,一定是从Object的构造器开始执行。

如果需要在子类方法中调用父类被覆盖(重写)的方法,则可使用super限定来调用父类被覆盖的实例方法。或者子类有和父类同名的实例变量,也可以使用super调用。

super和this一样,不能出现在static修饰的方法中。

5.7多态

5.7.1 多态性

父类名 变量 = new 子类构造器:
变量.方法(子类重写的父类方法)执行子类的方法。如果该方法父类没有,则编译不通过。

5.7.2 引用变量的强制类型转换

如上所说,如果要执行父类不包含的方法,如果需要进行向下转型。(子类)对象。

5.7.3 instanceof运算符

用于判断前面的对象是否是后面的类,或者子类、实现类的实例。是就ture,不是就false。
语法:对象 instanceof 类

## 5.8继承与组合 没有看,回去看。

5.9初始化快

5.9.1 使用初始化块

5.9.2 初始化块和构造器

实例初始化快:本质是构造器所有代码之前的代码;

5.9.3 静态初始化块

类初始化块,该类第一次运行时执行
静态初始化块不能访问非静态成员。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值