面向对象

1.面向对象的三大特性:封装性,继承性,多态性。


2.定义包:package


3.导入包:import  静态导入: import static

在不同的包中有相同的类时,在使用该类时,需要写类的完全限定名(既包名加类名)来指定使用的哪个包的类


4.继承是面向对象的一种机制,利用继承可以创建一个公共类,具有其他类公共的特性,然后让其他类来继承该类,再实现自己特性。  

  1. 子类构造器在初始化的时候,会自动调用父类的无参构造器(默认子类构造器的第一行调用父类无参构造器,也可以程序员自己指定其他父类的构造器).
  2. extends,子类拥有父类的成员方法和成员变量,除了父类用private修饰的成员。
  3. 在子类中,只有在方法里才能调用父类的成员变量,如果本方法中没有和父类一样的变量,可以不使用this或super关键字,直接对该变量进行赋值。
  4. 子类覆盖父类的方法时,必须保证重写方法的权限大于等于被重写方法的权限,方法名 参数列表一致。
  5. 父类 基类  超类                                                        子类
  6. 子类调用父类的属性和方法,用super关键字
5.抽象类:用absract修饰的类,抽象类不能实例化,既不能创建对象。
抽象类中可以没有抽象方法,但有抽象方法的类一定是抽象类。
抽象类可以有主函数,抽象方法不可以被静态或private来修饰,可以用其他三个访问修饰符。


6.重写:子类的方法覆盖父类的方法。要求方法名和参数都相同,可以改变重写方法的访问修饰符,但访问权限必须大于等于被重写方法的修饰符。


7.重载:多个方法的参数列表不同,方法体不同,访问修饰符可以改变,其他一致。


8.多态:一个事物的多种体现形态,基础:继承和重写。

  1. 静态成员变量和非静态成员变量,在多态下访问的是父类的变量。编译时期看左边,运行时期看左边。
  2. 静态方法,多态下访问的是父类的静态方法。 编译时期看左边,运行时期看左边。
  3. 非静态方法, 编译时期看左边,运行时期看右边。
  4. 向上转型,自动转,向下转型强制转。
9.接口:接口不具备实现什么功能,只是指定要做什么,但不负责怎么做,接口一旦被创建,接口中的所有方法都是抽象的,任何类都可以实现这个接口(包括抽象类),一个类可以实现多个接口。
在接口中部能声明成员变量,因为接口要具备三个特征:公共性,静态性,最终性。只能使用public final  static,保证实现接口的所有类访问的都是相同的常量。
接口内的方法都是抽象方法,只能用public absract来修饰(若不写,默认是这样,并且不能使用其他修饰符)
使用interface定义接口,使用implements实现接口

10.toString()方法:若没有重写这个方法,则输出对象的哈希值
基本类型数据  包装类   值
集合                                输出集合中的元素
String                              输出字符串
数组                                 输出哈希值
IO流                                 输出哈希值

11.构造代码块:对所有的实例对象进行统一的初始化,优先于对象的构造函数。对象一建立就运行构造代码块
格式:               {                          }

12.静态代码块:随着类的加载而执行,优先于主函数执行。作用:给类进行初始化。也可以给静态变量进行初始化。

13.局部变量不能声明为静态的。

14.构造函数之间的调用:构造函数之间的调用只能通过this关键字来完成,并且在调用时,只能出现在第一行,初始化要先执行,如果初始化中还有初始化,那么就去执行更细节的初始化。
注:子类构造函数中,不能既调用其它子类构造函数,又调用父类有参构造函数。

15.static:    修饰成员变量: 类变量
static修饰的成员变量存在于datasegment区(存放静态变量,字符串变量)
随着类的加载而加载,所以可以通过类名直接调用
优先于对象的存在
被所有的对象共享,在内存中只有一份
实例变量随着对象的建立而存在于堆区,对象销毁其也销毁

修饰成员方法:类方法
静态方法只可以访问静态成员,不能访问非静态成员
非静态方法可以访问静态成员。
局部变量不可以被static修饰
静态方法中不可以出现this和super关键字(因为静态的优先于对象存在)

生命周期:类变量生命周期最长,随着类的消失而消失
实例变量随着对象的销毁而销毁。

某一数据需要被所有对象共享时才会用static修饰。

16.对象的初始化过程:
Student s = new Student();
1.因为new Student()使用到了Student类,jvm将这个类从硬盘加载进内存。
2.如果有静态代码块,就会随着类的加载而执行, 静态成员和普通方法也会随着类的加载而加载(普通方法处于休眠状态,不能用类名来调用)
3.在堆中 开辟空间,分配内存地址
4.在堆中建立对象的特有属性,并对特有属性进行默认初始化
5.对对象的特有属性进行显示初始化。
6.执行构造代码块
7.执行对象指定的构造函数
8.将内存地址赋给引用s。

17.匿名对象:没有引用的对象。
使用方式:1当对象的方法只调用一次时,用匿名对象来完成,简化代码
2匿名对象可以被当作实参来传递

18.父类中定义的是多个类共性的功能,接口定义的是扩展功能

19.转义字符: 使用\的字符称为转义字符,否则一些特殊含义的字符不能正确使用。
如\" 打出" \t制表符 \n换行 \\ 打出\

20.语句: if()        if() else           if() else if()              while()       do  while();至少执行一次        for()       foreach()
switch(X)  : 接收byte short int char 字符串  枚举类型的数据  
break:终止最近的封闭循环或switch语句
continue:跳出本次循环,执行下一次循环。

21.局部变量定义在方法内,使用完则马上释放空间。

22.内部类:将类定义在另一个类的内部,其实就是类定义的位置发生了变化。分为成员内部类和局部内部类(定义在函数内,只能访问final类型的变量)。
成员内部类可以直接访问外部类的成员属性
外部类需要访问内部类的成员时需要创建内部类对象来访问。
私有化的成员内部类不能在其他类中直接创建内部类对象来访问,可以在外部类中创建内部类对象来访问静态的成员内部类(如果内部类中包含有静态属性,那么java规定内部类也必须声明为静态的),访问静态内部类的形式:Quter.inner in = new Quter.inner();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值