java基础之二 面向对象

一: 类和对象

  1. 类是模子,确定对象将具有的特征(属性)和行为(方法)。
  2. 类的特点:类是对象的类型,具有相同属性和方法的一组对象集合。
  3. 属性:对象具有的各种特征;每个对象的每个属性都拥有特定的值。
  4. 方法:对象执行的操作。
  5. 类和对象的关系:类是抽象的概念,仅仅是模板,对象是一个具体实体。
  6. 成员变量:在类中定义,用来描述对象要有什么。
  7. 局部变量:在类的方法中定义,在方法中临时保存数据。
  8. 成员变量与局部变量的区别:
    I:作用域不同,成员变量的作用域是整个类,局部变量的作用域是方法内部。
    II:初始值不同:java会给成员变量一个初始值,不会给局部变量一个初始值。
  9. 局部变量与成员变量重名时,局部变量拥有更高的优先级。
  10. 构造方法:java类中的一个用来初始化对象的方法,名称与类名相同,没有返回值;当有指定构造方法时,无论有参、无参的构造方法,系统都不会自动添加无参的构造方法;构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值。
  11. Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问。
  12. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
  13. 静态方法最适合工具类中方法的定义;比如文件操作,日期处理方法等;静态变量适合全局变量的定义。
  14. 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块;需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

二:封装

  1. 定义:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
  2. 好处:只能通过规定的方法访问数据;隐藏类的实例细节,方便修改和实现。
  3. 访问修饰符:private:本类;缺省:本类、同包;protected:本类、同包、子类;public:都可以。
  4. this关键字:表示当前对象,用来区分同名的成员变量和局部变量。
  5. 内部类的作用:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;内部类的方法可以直接访问外部类的所有数据,包括私有的数据;内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。
  6. 内部类的分类:成员内部类、静态内部类、方法内部类、匿名内部类。
  7. 内部类 对象名 = 外部类对象.new 内部类( )。
  8. 外部类是不能直接使用内部类的成员和方法;如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
  9. Java 中的静态内部类:静态内部类是 static 修饰的内部类,这种内部类的特点是: 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问;如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员;创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名=new 内部类()。
  10. 方法内部类:就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符。

三:继承(extends)

  1. 方法的重写:当调用方法时会优先调用子类的方法;返回值类型、方法名、参数类型顺序及个数相同。
    2.方法的重载:位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
  2. 继承的初始化顺序:先初始化父类再初始化子类;先执行初始化对象中的属性, 再执行构造方法中的初始化(执行构造方法)。
  3. final修饰的类不能被继承;final修饰的方法不能被重写;final修饰的属性不会隐性的初始化,必须在声明时或构造函数时初始化;final修饰的变量只能赋一次值。
  4. super关键字:在对象的内部使用,可以代表父类对象
  5. 子类的构造过程必须调用其父类的构造方法,如果子类的构造方法中没有调用父类的构造方法,则系统默认调用父类无参的构造方法,如果显示的调用构造方法,必须在子类构造方法的第一行,如果子类的构造方法中没有显示的调用父类的构造方法,而父类的构造方法中又没有无参的构造方法,则编译就会报错。
  6. Object类是所有类的父类,其toString方法输出对象在内存中的地址(哈希code),equals方法比较两个对象的引用是否相同,可以重写toString和equals方法。

四: 多态

  1. 含义:对象具有多种形态。
  2. 引用多态:父类的引用可以指向本类和子类的对象。
  3. 方法多态:调用的方法是子类对象中的方法。
  4. 父类的引用不能调用子类独有的方法。
  5. 引用类型转换:向上类型转换(隐式/自动类型转换),小类型到大类型的转换;
    向下类型转换:强类型转换,是大类型到小类型。
    instance of 运算符,来解决引用对象的类型,避免类型转换的安全性问题。
  6. 抽象类:abstract
    应用场景:
    a、某个父类只是知道子类应该包含怎样的方法,但无法知道子类怎么实现这些方法
    b、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类为模板,避免了子类设计的随意性
    作用:限制规定子类必须实现某些方法,但不关注实现细节
    使用规则:包含抽象方法的类是抽象类;抽象类中可以包含普通方法,也可以没有抽象方法;由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
  7. 接口:由全部常量和公共的抽象方法组成的特殊类;
    接口中方法不能有方法体,同时方法的访问修饰符不能是 private 和protected;
    继承父类必须在实现接口之前;
    接口命名通常会在前加I;
    接口在使用过程中经常与匿名内部类配合使用;
    匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称
    Interface i = new Interface(){
	    public void method(){
		}
    }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值