Java SE基础(四)

面向对象

面向对象编程 OOP(Object Oriented Programming)

以类的方式组织代码,以对象的组织(封装)数据

特性:封装 继承 多态

对象是具体的事物,类是抽象的是对对象的抽象。

类是对象的模板,对象是抽象概念的具体实例。

类是具有共同属性行为的事务的抽象,确定对象将会拥有的属性和行为。

类的特点:

  • 类是对象的数据类型
  • 类是具有相同属性和行为的一组对象的集合

属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。在类中通过成员变量来体现(类中方法外的变量)

行为:对象执行的操作。在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类和对象的关系:类是对象的抽象,对象是类的实体。

对象是能够看得到摸得找的真实存在的实体。

对象的使用

创建对象 

格式:类名  对象名=new 类名();

使用对象 

1.使用成员变量  格式:对象名.变量名

2.使用成员方法  格式:对象名.方法名()

成员变量都具有默认值,同数组默认规则。

成员变量与局部变量的区别

区别成员变量局部变量
类中的位置不同类中方法外

方法内或者方法声明上

内存中位置不同堆内存栈内存
生命周期不同随对象存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同有默认的初始化值没有默认的初始化值,必须先定义,赋值,才能使用

封装

private关键字

可以修饰成员变量和成员方法;作用是保护不被别的类使用,被private修饰的成员只在本类中才能访问。

get()用于获取成员变量的值,用public修饰

set()用于设置成员变量的值,用public修饰

this关键字

this修饰的变量用于指成员变量

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量

方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

是么时候使用this???

解决局部变量隐藏变量

this:代表所在类的对象引用

方法被那个对象调用,this就代表那个对象

构造方法

作用:创建对象

格式:

public class 类名(){

        修饰符  类名(参数){

        }

}

功能:主要完成对象数据的初始化

成员变量:private修饰

构造方法:一个无参构造方法;一个或多个参数的构造方法

成员方法:set()/get();显示对象信息的show()

创建对象并为其成员变量赋值的两种方式:

无参构造方法创建对象后使用set()赋值;

使用带参构造方法直接创建带有属性值的对象。

return关键字

return用于方法
   (1)返回方法指定类型的值(这个值总是确定的),也可以是对象
   (2)方法的结束

有返回类型 例如:return i;
无返回类型  return;

继承

extands

super注意点:

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法

super与this区别

代表的对象不同:

  • this本身调用者这个对象
  • super代表父类对象的应用

前提:

  • this没有继承也可以使用
  • super只有继承条件才可以使用

构造方法:

  • this():本类的构造
  • super():父类的构造

重写

需要有继承关系,子类重写父类的方法

  • 方法名必须相同
  • 参数列表必须相同
  • 修饰符:范围可以扩大但不能缩小
  • 抛出异常;范围可以被缩小,但不能扩大

子类的方法和父类必须要一致;方法体不同!

为什么重写?

父类的功能,子类不一定需要,或者不一定满足!

多态

注意:

  • 多态是方法的多态,属性没有多态
  • 父类和子类,有联系  类型转换异常!
  • 存在条件:继承关系,方法需要重写.父类引用指向子类对象!
  1. static方法,属于类,他不属于实例
  2. final常量
  3. private方法

instanceof   (类型转换) 引用类型

x instanceof y   如果有继承关系则返回true

static关键字

用static修饰的成员称为类成员、静态成员或者静态变量。

静态方法可以直接通过类名调用,说明调用静态方法的时候,是不存在对象的,所以,静态方法中不能有this与super关键字

静态方法只能访问所属类的静态成员变量和成员方法。非静态方法是可以访问静态方法与静态成员变量的。

通过static修饰的静态变量和方法,是可以被多个对象共享的。

当一个对象改变静态变量后,其他的对象在使用的这个静态变量也就发生了改变。

通过static修饰的静态方法是可以之间通过类名调用的。

静态代码块只能执行一次.

抽象类

abstract       

接口可以多继承

不能new这个抽象类,只能靠子类去实现它

抽象类中可以写普通方法

抽象方法必须在抽象类中

接口

普通类:只有具体实现

抽象类:具体实现和规范都有

接口:只有规范,自己无法写方法;接口需要有实现类;实现接口中的类,需要重写接口中的方法

声明类的关键字class,声明接口的关键字是interface

接口实现多继承

作用:

1.约束

2.定义一些方法,让不同的人实现

3.public abstract

4.public static final

5.接口不能被实例化,接口中没有构造方法

6.interface可以实现多个接口

7.必须重写接口中的方法

内部类

在类中在定义一个类

一个Java类中可以有多个class类,但是只能有一个public class

异常

检查性异常

运行时异常

错误

try{//try监控区域

}catch(){//catch捕获异常

}finally{//处理善后工作

}

finally  可以不要finally,可以释放资源

throws关键字指明要抛出给方法调用者的异常

throw关键字抛出异常

throws在方法函数头;而throw在函数体

throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。

throws主要在方法定义上使用,表示此方法中不进行异常处理,而是在调用处进行异常处理

throws可以单独使用,但throw不能.

====================================================

1.随机生成1-100的随机数

Random r =new Random();

int x=r.nextInt(100)+1;

2.方法调用

 格式:  方法名()

带参数方法调用 格式: 方法名(参数/变量名/常量值)

带返回值方法的调用

 格式:1.方法名(参数)    2.数据类型  变量名 =方法名(参数);

注意:数据类型是

3.形参:方法定义中的参数 实参:方法调用中的参数

4.方法不能嵌套定义;void表示无返回值

5.方法重载

同一个类中,方法名相同,参数列表不同(个数,类型不同)

方法重写

父类的方法,在子类中重写一下

6.字符串比较使用:equals() 长度:length()

7.返回指定索引处的char值:public char charAt(int index)

8.StringBuilder:可变的字符串.String不可变

使用方法:

  • 先创建对象;StringBuilder sb=new StringBuilder();
  • 添加数组:sb.append("ASD")..append("A")..append("D");
  • 反转: sb.reverse();

9.StringBuilder与String转换 

通过构造方法转换String转换为StringBuilder

String s="ASDFH";

StringBuilder sb =new StringBuilder(s);

通过toString(),StringBuilderString转换为String

String s=sb.toString();

10.面向对象

继承用extends关键字来实现,被继承的类成为父类,实现继承的类被称为子类.子类是父类的扩展,子类是一种特殊的父类,获得父类的全部属性和方法。

封装是指将对象的状态信息隐藏在对象内部,不允许外部的程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

多态性是指一个方法可以有多个实现的版本。类的多态性表现为方法的多态性,讨论在不同层次的类中以及在同一个类中,多个同名方法之间的关系问题。方法的多态性主要表现在方法的重载和方法的覆盖。

11.子类包含与父类同名方法的现象被称为方法重写,又称覆盖(Override)。子类覆盖父类的方法之后,子类的对象就不能访问父类的方法了,但是可以在子类中调用父类中被覆盖的方法。使用super关键字或者父类的类名作为调用者就可以调用父类中被覆盖的方法。对于属性同样,在子类的对象中也可以通过super来访问父类被覆盖的属性。

12.使用包装类把基本类型包装成引用类型,这样集合就可以存储了。
包装类:可以把基本类型包装成一个类
自动装箱:
基本类型-->包装类型
自动拆箱:
包装类型-->基本类型
基本类型对应的包装类型如下:
基本类型        包装类(全部都在java.long下,不需要手动导包)
byte                Byte
short              Short
int                  Integer [特殊]
long               Long
float               Float
double           Double
char              Character[特殊]
boolean        Boolean

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值