面向对象编程

Posted ltdh

tags:

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

31.类和对象

对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。

它们的关系是,对象是类的实例,类是对象的模板。对象是通过new classname产生的,用来调用类的方法;类的构造方法

32.对象的属性和方法

public class T {
  void a(){
      System.out.println("a");
  }
  int a=1;
}
public class test {
  public static void main(String[] args) {
      T t=new T();
      System.out.println(t.a);
      t.a();
  }
}

33.Java的内存管理与垃圾回收

内存管理

程序计数器:程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,可以理解为是当前线程的行号指示器

:栈分为虚拟机栈和本地方法栈,既然都是栈,那么就具有相同的特性:私有的,线程安全栈中存储了基本数据类型对象的引用

:堆是线程共享的,存储的是对象的实例,有的地方写存储的是对象的实例和数组,实际上数组是特殊的类,那么数组也属于对象的实例。

方法区:方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

常量池:运行时常量池(Runtime Constant Pool)是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述等信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

垃圾回收:

当某个一个对象,没有任何引用指向它的时候,那么它就满足垃圾回收的条件,在适当的时候,JVM虚拟机进行GC将其回收,释放空间,以供后续再利用。JVM的垃圾回收机制使得开发人员从手动释放内存资源的过程中解放出来。开发人员可以更加专注的进行业务功能的开发。

34.JVM的内存结构

技术图片

35.面向对象的三大特性

抽象,继承,多态

36.对象的关联关系

依赖关系:对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。

关联关系:对象之间一种引用关系

如:

public class test {
  private T t;
}
class T{
   
}

聚合:聚合(关联关系的一种):表示has-a的关系。与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来 语法上是没办法区分的,从语义上才能更好的区分两者的区别。

如汽车类与引挚类,轮胎类之间的关系就是整体与个体的关系。

组合:对象A包含对象B,对象B离开对象A没有实际意义。是一种更强的关联关系。人包含手,手离开人的躯体就失去了它应有的作用。

继承:类与类的继承关系,类与接口的实现关系。

37.Object类的结构与方法

Java中所有的类都有一个共同的祖先。这个祖先就是Object类。如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。

Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法。

38继承中类中各个成员特点

如果子父类中出现同名的非私有变量时,子类要访问本类的这个同名变量,用this关键字。子类要访问父类中的同名变量,用supper关键字。方法看右。

39.方法重写Override

子类重写父类方法,也是多态。

40.访问权限修饰符

技术图片

41.多态与虚拟方法调用

继承就是多态的表现,虚拟方法调用看右

42 instanceof运算符

public class Zi extends Fu {
  int a=20;
  void a(){
      System.out.println("Zi");
  }
  public static void main(String[] args) {
      Zi zi=new Zi();
      System.out.println(zi instanceof Fu);
  }
}

43.多态的应用之多态数组

Person[] person = {new Person("张三", 32),
                                new Student("李四", 21, 120, 90.0),
                                new Student("王五", 22, 119, 91.5),
                                new Teacher("刘老师", 35, 10, "Java EE"),
                                new Teacher("张老师", 11)};

44.多态的应用之多态参数

父类作为参数但是可以传进去子类

45.对象类型的转换

从子类到父类的类型转换可以自动进行;

  从父类到子类的类型转换必须通过造型(强制类型转换)实现;

  无继承关系的引用类型间的转换是非法的;

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

面向面试编程代码片段之GC

Scala的面向对象与函数编程

面向对象编程

面向过程编程与面向对象编程

Java面向对象

面向对象编程(OOP)