面向对象基础知识

Posted yyphappness

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象基础知识相关的知识,希望对你有一定的参考价值。

  • c语言:面向过程;c++面向对象
  • 同类型变量放在一起组成数组
    • 属性
    • 方法
    • 构造方法。
      • 用于创建这个类的对象。无参的构造方法可以由系统自动创建。
      • 构造器也叫构造方法constructor,用于对象的初始化。
      • 注意:手动添加的构造器,系统不会自动创建,要自己加上空构造器,
      • 要点
        • 通过new关键字调用。
        • 构造器虽然有返回值,但是不能定义返回值类型。不能在构造器里使用return返回某个值。
        • 如果我们没有定义构造器,编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。
        • 构造器的方法名必须和类名一致。
          • public point(double_x,double_y){
          • x=_x;
          • y=_y;
          • }
      • 重载
        • 方法名相同,参数不同。
        • 构造方法的第一句总是super()
        • this表示创建好的对象。
    • 程序入口(主函数)
      • new一个对象
  • 内存分析
    • java虚拟机内存分3个区域
      • stack,
        • 栈描述的是方法执行的内存模型每个方法被调用都会创建一个栈帧(存储局部变量操作数,方法出口等。)
        • JVM为每个线程创建一个栈。用于存放该线程执行方法的信息。(实际参数,局部变量等。)
        • 栈属于线程私有,不能实现线程间的共享。
        • 在的存储特性是,”先进后出,后进先出。”
        • 栈是由系统自动分配,速度快。栈是一个连续的内存空间。
      • heap,
        • 堆用于存储创建好的对象和数组。(数组也是对象。)
        • jvm只有一个堆被所有线程共享。
        • 堆是一个不连续的内存空间。分配灵活,速度慢。
      • 方法区method area又叫静态区特点如下。
        • jvm只有一个方法区被所有线程共享。
        • 方法区实际也是堆只是用于存储类,常量相关的信息。
        • 用来存放程序中永远是不变或唯一的内容。(类信息。Class对象。静态变量字符串常量。)
  • 对象
    • 创建的过程
      • 1.分配对象空间,并将对象成员变量初始化为零或空。
      • 2.执行属性值的显式初始化。
      • 3. 执行构造方法。
      • 4.返回对象的地址给相关的变量。
    • this
      • 本质建好对象的地址。
      • 2.当程序出现二义性的时候。用this来区分成员变量和局部变量。
      • 3.this可以调用其他构造器。构造器的调用必须放在第一句。
      • this不能用于static方法中。
  • 静态
    • static关键字
      • 在类中用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。
      • static修饰的成员变量和方法,从属于类。普通变量和方法从属于对象。
  • 包机制
    • 非注释性语句的第一句用package+包名
    • 包名:域名倒着写。再加上项目名,模块名。
    • 通过import导入包中的类
      • import * 降低编译速度
      • 静态导入
        • import static system.lang.Math
  • 继承
    • extends 要继承的类名-------继承所有的属性和方法
    • Java接口有多继承,类只有单继承,c++有多继承
    • stu instenceof Stutent-------判断左面这个对象是不是右面这个类的的实例,返回布尔值
  • 方法重写override
    • 1.子类通过重写父类的方法,可以用自身的行为替换父类的行为。
      • public Horse extends Vehicle{
      • public void run(){
        • system.out.println("四季纷飞")
        • }
      • }
    • 2.返回值类型小于等于父类的类型。
    • 3.方法名形参列表相同。
    • 4.访问权限子类大于等于父类。
  • Object类是所有java类的根基类
    • toString()方法
      • 1.undefined和null没有toString()方法
      • 2.布尔型数据True和false返回对应的true和false
      • 3.字符串类型原值返回
      • 4.
  • equals方法的重写
    • public boolean equals(Object obj){
      • ecliose鼠标右键,source,点击生成hashcode和equals方法
      • }
    • 对象内容是否相等
  • super
    • 直接引用父类。super.f()
  • 封装encapsulation
    • 栗子:以电视
    • 访问控制符
      • private表示私有,只有自己类能访问。
        • 此类无法使用父类的私有属性和方法。
      • default有事没有修饰符修饰。只有同一个包的类能访问。
      • protected表示可以被同一个包的类以及其他包中的子类访问。
      • public表示可以被该项目的所有包中的所有类访问。
    • 封装使用细节
      • 1.设置属性私有
      • 2.对属性设置set,get方法
        • eclipse自动生成:右击——>source——>create set and get
        • public class Person{
          • private int name;
          • private int age;
          • public void setName(String name){
          • this.name=name;
          • }
          • public String getName(){
          • return this.name;
          • }
          • public void setAge(int age){
          • if(age>=1&&age<=120){
            • this.age=age;
            • }else{
            • system.out.println()
            • }
          • }
          • public int getAge(){
          • return this.age;
          • }
        • }
  • 多态
    • 1.同一个方法的调用,由于对象的不同可能会有不同的行为。在现实生活中,同一个方法,具体实现会完全不同。
    • 2.多态是方法的多态,不是属性的多态
    • 3.三个必要条件
      • 继承
      • 重写
      • 父类引用指向子类对象
    • 4.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

以上是关于面向对象基础知识的主要内容,如果未能解决你的问题,请参考以下文章

面向对象基础

面向对象基础一

JavaSE基础知识—面向对象(5.1类和对象概念创建及内存分配)

第二十五节:Java语言基础-面向对象基础

Java基础---面向对象

Python之面向对象:面向对象基础